home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 008a / intr26a.zip / INTERRUP.A < prev    next >
Text File  |  1991-06-15  |  190KB  |  4,985 lines

  1. Interrupt List        Release 26 (v91.3)        Last change 6/15/91
  2. This compilation is Copyright (c) 1989, 1990, 1991 Ralf Brown
  3. ---------------------------------------------
  4. Please redistribute the following files unmodified as a group, in a pair of
  5. archives named INTER26A and INTER26B (preferably the original authenticated
  6. PKZIP archives):
  7.     INTERRUP.1ST    the read-me file, containing credits, availability info
  8.     INTERRUP.A    INT 00 through INT 14 \
  9.     INTERRUP.B    INT 15 through INT 1F  \ total 599 pages at 60 lines
  10.     INTERRUP.C    INT 20 through INT 2E  / per page, 648 with INTPRINT -p
  11.     INTERRUP.D    INT 2F through INT 5F /
  12.     INTERRUP.E    INT 60 through INT FF/
  13.     INTERRUP.PRI    a brief introduction to interrupts
  14.     INTPRINT.COM    a simple formatter that also generates a list summary
  15.     INTPRINT.DOC    instructions for INTPRINT
  16.     INTPRINT.C    source code for INTPRINT
  17.     MEMORY.LST    format of the BIOS data area
  18.     INT2QH.*    program to convert list into QuickHelp database
  19.     INT2GUID.*    program to convert list into TurboPower GUIDE database
  20. ---------------------------------------------
  21. *******************************************************************************
  22. **  If you have contributed to the interrupt list in the past, please send   **
  23. **  me your current email address if it differs from the one shown in         **
  24. **  INTERRUP.1ST.   Also see the file REWARD.                     **
  25. *******************************************************************************
  26.  
  27. If you notice any mistakes or omissions, please let me know!  It is only with
  28. YOUR help that the list can continue to grow at the current rate.  Please send
  29. all changes to me rather than distributing a modified version of the list.
  30.  
  31. Please read the file INTERRUP.1ST before asking me any questions.  You may find
  32. that they have already been addressed.
  33.  
  34.      Ralf Brown
  35.  
  36. ARPA: ralf@cs.cmu.edu
  37. UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
  38. BIT:  ralf%cs.cmu.edu@cmuccvma
  39. FIDO: Ralf Brown 1:129/26 or 1:129/53
  40.     or post a message to the DR_DEBUG echo
  41. CIS:  >INTERNET:ralf@cs.cmu.edu 
  42.  
  43. I reply to all e-mail submissions and inquiries, but some of my replies bounce
  44. because of bad return paths.  If you don't get a response from me within a
  45. reasonable period of time, send it again with a better return path (starting at
  46. harvard or ucbvax for UUCP, from the ARPA Internet for others).
  47. ---------------------------------------------
  48. See INTERRUP.1ST for the key to system abbreviations and a list of the
  49. trademarks mentioned here.
  50. ---------------------------------------------
  51. DISCLAIMER:  THIS MATERIAL IS PROVIDED "AS IS".     I verify the information
  52. contained in this list to the best of my ability, but I cannot be held
  53. responsible for any problems caused by use or misuse of the information,
  54. especially for those functions not officially  documented.  If it is marked
  55. "internal", you should check it carefully to make sure it works the same
  56. way in your version of the software (and please let me know whether or not
  57. it works the same way).     Information marked with "???" is known to be
  58. incomplete or guesswork.
  59. ---------------------------------------------
  60. The use of -> instead of = signifies that the indicated register or register
  61. pair contains a pointer to the specified item, rather than the item itself
  62. ----------00---------------------------------
  63. INT 00 - CPU-generated - DIVIDE ERROR
  64. Notes:    generated if the divisor of a DIV or IDIV instruction is zero or the
  65.       quotient overflows the result register; DX and AX will be unchanged.
  66.     on an 8086/8088, the return address points to the following instruction
  67.     on an 80286+, the return address points to the divide instruction
  68. SeeAlso: INT 04
  69. ----------01---------------------------------
  70. INT 01 - CPU-generated - SINGLE STEP
  71. Notes:    generated after each instruction if TF (trap flag) is set; TF is
  72.       cleared on invoking the single-step interrupt handler
  73.     interrupts are prioritized such that external interrupts are invoked
  74.       after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
  75.       first instruction of the handler executes
  76.     used by debuggers for single-instruction execution tracing, such as
  77.       MSDOS DEBUG's T command
  78. SeeAlso: INT 03
  79. ----------01---------------------------------
  80. INT 01 - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
  81.    Instruction address breakpoint fault - will return to execute instruction
  82.    Data address breakpoint trap - will return to following instruction
  83.    General detect fault, debug registers in use
  84.    Task-switch breakpoint trap
  85. SeeAlso: INT 03
  86. ----------02---------------------------------
  87. INT 02 - external hardware - NON-MASKABLE INTERRUPT
  88. Notes:    generated by the CPU when the input to the NMI pin is asserted
  89.     return address points to start of interrupted instruction on 80286+
  90.     although the Intel documentation states that this interrupt is
  91.       typically used for power-failure procedures, it has many other uses
  92.       on IBM-compatible machines:
  93.         Memory parity error: all except Jr, CONV, and some machines
  94.                 without memory parity
  95.         Breakout switch on hardware debuggers
  96.         Coprocessor interrupt: all except Jr and CONV
  97.         Keyboard interrupt: Jr, CONV
  98.         I/O channel check: CONV, PS50+
  99.         Disk-controller power-on request: CONV
  100.         System suspend: CONV
  101.         Real-time clock: CONV
  102.         System watch-dog timer, time-out interrupt: PS50+
  103.         DMA timer time-out interrupt: PS50+
  104. ----------03---------------------------------
  105. INT 03 - CPU-generated - BREAKPOINT
  106. Notes:    generated by the one-byte breakpoint instruction (opcode CCh)
  107.     used by debuggers to implement breakpoints, such as MSDOS DEBUG's G
  108.       command
  109.     also used by Turbo Pascal versions 1,2,3 when {$U+} specified
  110.     return address points to byte following the breakpoint instruction
  111. SeeAlso: INT 01
  112. ----------0309--SI4647-----------------------
  113. INT 03 - Soft-ICE BACK DOOR COMMANDS
  114.     AH = 09h
  115.     SI = 4647h ('FG')
  116.     DI = 4A4Dh ('JM')
  117.     AL = function
  118.         10h display string in Soft-ICE window
  119.             DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
  120.         11h execute Soft-ICE command
  121.             DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
  122.         12h get breakpoint information
  123.             Return:    BH = entry number of last breakpoint set
  124.             BL = type of last breakpoint set
  125.                 00h BPM (breakpoint register types)
  126.                 01h I/O
  127.                 02h INTerrupt
  128.                 03h BPX (INT 03h-style breakpoint)
  129.                 04h reserved
  130.                 05h range
  131.             DH = entry number of last breakpoint to be triggered
  132.             DL = type of last triggered breakpoint (see above)
  133.             
  134. ----------04---------------------------------
  135. INT 04 - CPU-generated - INTO DETECTED OVERFLOW
  136. Notes:    the INTO instruction will generate this interrupt if OF (Overflow Flag)
  137.       is set; otherwise, INTO is effectively a NOP
  138.     may be used for convenient overflow testing (to prevent errors from
  139.       propagating) instead of JO or a JNO/JMP combination
  140. SeeAlso: INT 00
  141. ----------05---------------------------------
  142. INT 05 - PRINT SCREEN
  143. Notes:    normally invoked by the INT 09 handler when PrtSc key is pressed, but
  144.       may be invoked directly by applications
  145.     byte at 0050h:0000h contains status used by default handler
  146.       00h not active
  147.       01h PrtSc in progress
  148.       FFh last PrtSc encountered error
  149.     default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
  150. SeeAlso: INT 10/AH=12h/BL=20h
  151. ----------05---------------------------------
  152. INT 05 - CPU-generated (80186+) - BOUND RANGE EXCEEDED
  153. Notes:    generated by BOUND instruction when the value to be tested is less than
  154.       the indicated lower bound or greater than the indicated upper bound.
  155.     returning from this interrupt re-executes the failing BOUND instruction
  156. ----------06---------------------------------
  157. INT 06 - CPU-generated (80286+) - INVALID OPCODE
  158. Notes:    generated when the CPU attempts to execute an invalid opcode (most
  159.       protected-mode instructions are considered invalid in real mode)
  160.     generated on BOUND, LDS, LES, or LIDT instructions which specify a
  161.       register rather than a memory address
  162.     return address points to beginning of invalid instruction
  163.     with proper programming, this interrupt may be used to emulate
  164.       instructions which do not exist; many 386 BIOSes emulate the 80286
  165.       undocumented LOADALL instruction which was removed from the 80386+
  166. SeeAlso: INT 0C"CPU",INT 0D"CPU"
  167. ----------07---------------------------------
  168. INT 07 - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
  169. Notes:    automatically called if a coprocessor instruction is encountered when
  170.       no coprocessor is installed
  171.     can be used to emulate a numeric coprocessor in software
  172. SeeAlso: INT 09"MATH UNIT PROTECTION"
  173. ----------08---------------------------------
  174. INT 08 - IRQ0 - SYSTEM TIMER
  175. Notes:    generated 18.2 times per second by channel 0 of the 8254 system timer,
  176.       this interrupt is used to keep the time-of-day clock updated
  177.     programs which need to be invoked regularly should use INT 1C unless
  178.       they need to reprogram the timer while still keeping the time-of-day
  179.       clock running at the proper rate
  180.     default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
  181.     may be masked by setting bit 0 on I/O port 21h
  182. SeeAlso: INT 1C,INT 4A,INT 50"DESQview",INT 58"DoubleDOS",INT 70
  183. ----------08---------------------------------
  184. INT 08 - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
  185. Notes:    called when multiple exceptions occur on one instruction, or an
  186.       exception occurs in an exception handler
  187.     called in protected mode if an interrupt above the defined limit of
  188.       the interrupt vector table occurs
  189.     return address points at beginning of instruction with errors or the
  190.       beginning of the instruction which was about to execute when the
  191.       external interrupt caused the exception
  192.     if an exception occurs in the double fault handler, the CPU goes into
  193.       SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
  194.       this "triple fault" is a faster way of returning to real mode on
  195.       many 80286 machines than the standard keyboard controller reset
  196. ----------09---------------------------------
  197. INT 09 - IRQ1 - KEYBOARD DATA READY
  198. Notes:    generated when data is received from the keyboard.  This is normally a
  199.       scan code, but may also be an ACK or NAK of a command on AT-class
  200.       keyboards.
  201.     may be masked by setting bit 1 on I/O port 21h
  202.     if the BIOS supports an enhanced (101/102-key) keyboard, it calls
  203.       INT 15/AH=4Fh after reading the scan code from the keyboard and
  204.       before further processing
  205.     the interrupt handler performs the following actions for certain
  206.       special keystrokes:
  207.         Ctrl-Break     invoke INT 1B, set flag at 0040h:0071h
  208.         SysRq     invoke INT 15/AH=85h
  209.         Ctrl-Numlock place system in a tight wait loop
  210.         Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
  211.                destination of the jump at that address)
  212.         Shift-PrtSc     invoke INT 05
  213. SeeAlso: INT 05,INT 15/AH=4Fh,INT 15/AH=85h,INT 16,INT 1B,INT 51"DESQview"
  214. SeeAlso: INT 59"DoubleDOS"
  215. ----------09---------------------------------
  216. INT 09 - CPU-generated (80286+) - PROCESSOR EXTENSION PROTECTION ERROR
  217. Notes:    called if the coprocessor attempts to access memory outside a segment
  218.       boundary; it may occur at an arbitrary time after the coprocessor
  219.       instruction was issued
  220.     until the condition is cleared or the coprocessor is reset, the only
  221.       coprocessor instruction which may be used is FNINIT; WAIT or other
  222.       coprocessor instructions will cause a deadlock because the
  223.       coprocessor is still busy waiting for data
  224. SeeAlso: INT 07"CPU"
  225. ----------09---------------------------------
  226. INT 09 - internal hardware - RESERVED BY Intel (80486 protected mode)
  227. Note:    this exception has been moved to INT 0D
  228. SeeAlso: INT 09"MATH",INT 0D
  229. ----------0A---------------------------------
  230. INT 0A - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
  231. Notes:    the TOPS and PCnet adapters use this interrupt request line by default
  232.     DOS 3.2 revectors IRQ2 to a stack-switching routine
  233.     on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
  234.       connects to the slave 8259.  The BIOS redirects the interrupt for
  235.       IRQ9 back here.
  236.     under DESQview, only the INT 15h vector and BASIC segment address (the
  237.       word at 0000h:0510h) may be assumed to be valid for the handler's
  238.       process
  239.     many VGA boards do not implement the vertical retrace interrupt,
  240.       including the IBM VGA Adapter where the traces are either cut or
  241.       removed
  242. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  243. ----------0A---------------------------------
  244. INT 0A - IRQ2 - Tandy 1000-series HARD DISK
  245. Note:    may be masked by setting bit 2 on I/O port 21h
  246. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  247. ----------0A---------------------------------
  248. INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
  249. Note:    newer Roland cards and MIDI interfaces by other manufacturers use
  250.       a jumper-selectable IRQ, but software and hardware generally defaults
  251.       to IRQ2
  252. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  253. ----------0A---------------------------------
  254. INT 0A - CPU-generated (80286+ protected mode) - INVALID TASK STATE SEGMENT
  255. Notes:    automatically called during a task switch if the new TSS specified by
  256.       the task gate is invalid for any of the following reasons:
  257.         TSS limit is less than 43 (80286) or 103 (80386/80486)
  258.         LDT selector invalid or segment not present
  259.         null SS selector, or SS selector outside LDT/GDT limit
  260.         stack segment is read-only
  261.         stack segment DPL differs from new CPL, or RPL <> CPL
  262.         CS selector is outside LDT/GDT limit or not code
  263.         non-conforming code segment's DPL differs from CPL
  264.         conforming code segment's DPL > CPL
  265.         DS/ES selectors outside LDT/GDT limit or not readable segments
  266.     the handler must use a task gate in order to have a valid TSS under
  267.       which to execute; it must also reset the busy bit in the new TSS
  268. SeeAlso: INT 0B"CPU"
  269. ----------0B---------------------------------
  270. INT 0B - IRQ3 - SERIAL COMMUNICATIONS (COM2)
  271. Notes:    the TOPS and PCnet adapters use this interrupt request line as an
  272.       alternate
  273.     on PS/2's, COM2 through COM8 share this interrupt; on many PC's, COM4
  274.       shares this interrupt
  275.     may be masked by setting bit 3 on I/O port 21h
  276. SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS"
  277. ----------0B---------------------------------
  278. INT 0B - CPU-generated (80286+ protected mode) - SEGMENT NOT PRESENT
  279. Notes:    generated when loading a segment register if the segment descriptor
  280.       indicates that the segment is not currently in memory, unless the
  281.       segment is an LDT (see INT 0A"CPU") or stack segment (see
  282.       INT 0C"CPU") needed by a task switch
  283.     may be used to implement virtual memory by loading in segments as they
  284.       are accessed, clearing the "not present" bit after loading
  285. SeeAlso: INT 0A"CPU",INT 0E"hardware"
  286. ----------0C---------------------------------
  287. INT 0C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
  288. Notes:    on many PC's, COM3 shares this interrupt
  289.     may be masked by setting bit 4 on I/O port 21h
  290. SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS"
  291. ----------0C---------------------------------
  292. INT 0C - CPU-generated (80286+) - STACK FAULT
  293. Notes:    generated on stack overflow/underflow in protected mode
  294.     generated in protected mode if an inter-level transition or task switch
  295.       references a stack segment marked "not present"
  296.     generated on accessing a word operand at SS:FFFFh in real mode
  297.     the 80286 will shut down in real mode if SP=1 before a push.  On the
  298.       PC AT and compatibles, external circuitry generates a reset on
  299.       shutdown.
  300. SeeAlso: INT 0B"CPU",INT 0D"CPU"
  301. ----------0C---------------------------------
  302. INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
  303.    Call offset 100h in the interrupt handler's segment with
  304.     AH = function
  305.         03h update screen
  306.         05h select next session
  307.         AL = session number (00h-03h)
  308.         Return: AL = session type code
  309.                 00h not active
  310.                 01h display session
  311.                 02h printer session
  312.                 FEh invalid session number
  313.             DS = requested session's data segment (0 if not active)
  314. Return: ???
  315.  
  316. Format of emulator's data area (offset from interrupt handler's segment):
  317. Offset    Size    Description
  318. 13Eh    BYTE    bit flags for status line indicators turned on since this byte
  319.         last zerod
  320. 13Fh    BYTE    bit flags for status line indicators turned off since this
  321.         byte last set to FFh
  322. 140h    WORD    offset of EBCDIC to ASCII translation
  323. 146h    WORD    offset of EBCDIC screen buffer
  324. 148h    WORD    offset of EC (engineering change) level signature
  325. 150h    BYTE    "KEYI"
  326. 151h    BYTE    5250 key scan code to be sent to remote
  327. 15Bh    BYTE    "SYSAV"
  328. 15Dh    BYTE    5250 cursor column
  329. 15Eh    BYTE    5250 cursor row
  330. 167h    BYTE    "DVCTAD"
  331. 178h    BYTE    "FLAGS"
  332. 184h    BYTE    "SESSNOAD"
  333. 193h    BYTE    "STNAD"
  334. 198h    BYTE    "NSDS"
  335. ----------0D---------------------------------
  336. INT 0D - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
  337. Notes:    under DESQview, only the INT 15h vector and BASIC segment address (the
  338.       word at 0000h:0510h) may be assumed to be valid for the handler's
  339.       process
  340.     may be masked by setting bit 5 on I/O port 21h
  341. SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
  342. ----------0D---------------------------------
  343. INT 0D - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
  344. SeeAlso: INT 55
  345. ----------0D---------------------------------
  346. INT 0D - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
  347. Notes:    called in real mode when
  348.         an instruction accesses a word operand located at offset FFFFh in
  349.           segment CS, DS, ES, FG, or GS
  350.         a PUSH MEM or POP MEM instruction contains an invalid bit encoding
  351.           in the second byte
  352.         an instruction exceeds the maximum length allowed (10 bytes for
  353.           80286, 15 bytes for 80386/80486)
  354.         an instruction wraps from offset FFFFh to offset 0000h
  355.     called in protected mode on protection violations not covered by INT 06
  356.       through INT 0C, including
  357.         segment limit violations
  358.         write to read-only segments
  359.         accesses using null DS or ES selectors
  360.         accesses to segments with privilege greater than CPL
  361.         wrong descriptor type
  362.     called on 80486 protected-mode floating-point protection fault
  363. SeeAlso: INT 09"80486",INT 0C"STACK"
  364. ----------0E---------------------------------
  365. INT 0E - IRQ6 - DISKETTE CONTROLLER
  366. Notes:    generated by floppy disk controller on completion of an operation
  367.     default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
  368.     may be masked by setting bit 6 on I/O port 21h
  369. SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS"
  370. ----------0E---------------------------------
  371. INT 0E - CPU-generated (80386+ native mode) - PAGE FAULT
  372. Note:    used to implement virtual memory
  373. SeeAlso: INT 0B"hardware"
  374. ----------0F---------------------------------
  375. INT 0F - IRQ7 - PARALLEL PRINTER
  376. Notes:    generated by the LPT1 printer adapter when printer becomes ready
  377.     most printer adapters do not reliably generate this interrupt
  378.     the 8259 interrupt controller generates an interrupt corresponding to
  379.       IRQ7 when an error condition occurs
  380. SeeAlso: INT 0D"LPT2",INT 57"DESQview",INT 5F"DoubleDOS"
  381. ----------10---------------------------------
  382. INT 10 - CPU-generated (80286+) - COPROCESSOR ERROR
  383. Notes:    generated by the CPU when the -ERROR pin is asserted by the coprocessor
  384.     AT's and clones usually wire the coprocessor to use IRQ13, but not all
  385.       get it right
  386. SeeAlso: INT 09"hardware",INT 75
  387. ----------1000-------------------------------
  388. INT 10 - VIDEO - SET VIDEO MODE
  389.     AH = 00h
  390.     AL = mode (see below)
  391. Return: AL = video mode flag (Phoenix BIOS)
  392.         20h mode > 7
  393.         30h modes <= 7 except mode 6
  394.         3Fh mode 6
  395.     AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  396. Notes:    IBM standard modes do not clear the screen if the high bit of AL is set
  397.       (EGA or higher only)
  398.     the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
  399.       SpeedSTAR VGA, Groundhog Graphics Shadow VGA
  400. SeeAlso: AX=0070h,AX=007Eh,AX=10F0h,AX=6F05h,AH=FFh"GO32"
  401.  
  402. Values for video mode:
  403.       text/ text pixel     pixel    colors    disply    scrn  system
  404.       grph resol  box    resoltn        pages    addr
  405.  00h = T   40x25  8x8        16gray       8    B800 CGA,PCjr
  406.      = T   40x25  8x14        16gray       8    B800 EGA
  407.      = T   40x25  8x16          16       8    B800 MCGA
  408.      = T   40x25  9x16          16       8    B800 VGA
  409.  01h = T   40x25  8x8          16       8    B800 CGA,PCjr
  410.      = T   40x25  8x14          16       8    B800 EGA
  411.      = T   40x25  8x16          16       8    B800 MCGA
  412.      = T   40x25  9x16          16       8    B800 VGA
  413.  02h = T   80x25  8x8        16gray       4    B800 CGA,PCjr
  414.      = T   80x25  8x14        16gray       4    B800 EGA
  415.      = T   80x25  8x16          16       4    B800 MCGA
  416.      = T   80x25  9x16          16       4    B800 VGA
  417.  03h = T   80x25  8x8          16       4    B800 CGA,PCjr
  418.      = T   80x25  8x14          16       4    B800 EGA
  419.      = T   80x25  8x16          16       4    B800 MCGA
  420.      = T   80x25  9x16          16       4    B800 VGA
  421.  04h = G   40x25  8x8    320x200       4        B800 CGA,PCjr,EGA,MCGA,VGA
  422.  05h = G   40x25  8x8    320x200     4gray        B800 CGA,PCjr,EGA
  423.      = G   40x25  8x8    320x200       4        B800 MCGA,VGA
  424.  06h = G   80x25  8x8    640x200       2        B800 CGA,PCjr,EGA,MCGA,VGA
  425.  07h = T   80x25  9x14         mono      var    B000 MDA,Hercules,EGA
  426.      = T   80x25  9x16         mono        B000 VGA
  427.  08h = G   20x25  8x8    160x200      16             PCjr
  428.      = T  132x25  8x8          16        B800 ATI EGA/VGA Wonder **
  429.      = T  132x25  8x8         mono        B000 ATI EGA/VGA Wonder **
  430.      = G   90x43  8x8   720x352  mono        B000 Hercules + MSHERC.COM
  431.  09h = G   40x25  8x8    320x200      16             PCjr
  432.  0Ah = G   80x25  8x8    640x200       4             PCjr
  433.  0Bh =     reserved (used internally by EGA BIOS)
  434.  0Ch =     reserved (used internally by EGA BIOS)
  435.  0Dh = G   40x25  8x8    320x200      16       8    A000 EGA,VGA
  436.  0Eh = G   80x25  8x8    640x200      16       4    A000 EGA,VGA
  437.  0Fh = G   80x25  8x14    640x350     mono       2    A000 EGA,VGA
  438.  10h = G   80x25  8x14    640x350       4       2    A000 64k EGA
  439.      = G        640x350      16        A000 256k EGA,VGA
  440.  11h = G   80x30  8x16    640x480     mono        A000 VGA,MCGA,ATI EGA,ATI VIP
  441.  12h = G   80x30  8x16    640x480 16/256k        A000 VGA,ATI VIP
  442.      = G   80x30  8x16    640x480     16/64        A000 ATI EGA Wonder
  443.      = G        640x480   16             UltraVision+256K EGA
  444.  13h = G   40x25  8x8    320x200 256/256k    A000 VGA,MCGA,ATI VIP
  445.  14h = G   80x25  8x8    640x200                 Lava Chrome II EGA
  446.      = G        640x400      16             Tecmar VGA/AD
  447.  15h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  448.  16h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  449.      = G        800x600      16             Tecmar VGA/AD
  450.  17h = G   80x34  8x14    640x480                 Lava Chrome II EGA
  451.      = T  132x25                     Tecmar VGA/AD
  452.  18h = T  132x44  8x8         mono             Tseng Labs EVA
  453.      = T  132x44  8x8         16/256       2    B000 Tseng ET4000 chipset
  454.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  455.      = G           1024x768      16             Tecmar VGA/AD
  456.  19h = T  132x25  8x14         mono             Tseng Labs EVA
  457.      = T  132x25  8x14         16/256       4    B000 Tseng ET4000 chipset
  458.  1Ah = T  132x28  8x13         mono             Tseng Labs EVA
  459.      = T  132x28  8x13         16/256       4    B000 Tseng ET4000 chipset
  460.      = G        640x350     256             Tecmar VGA/AD
  461.  1Bh = G        640x400     256             Tecmar VGA/AD
  462.  1Ch = G        640x480     256             Tecmar VGA/AD
  463.  1Dh = G        800x600     256             Tecmar VGA/AD
  464.  21h = G   80x43  8x8    720x348     mono        B000 DESQview 2.x+Hercules ***
  465.  22h = T  132x44  8x8                     Tseng Labs EVA
  466.      = T  132x44  8x8         16/256       2    B800 Tseng ET4000 chipset
  467.      = T  132x44  8x8                     Ahead Systems EGA2001
  468.      = T  132x44  8x8          16       2    B800 Ahead B
  469.      = T  132x44          16             Orchid Prodesigner VGA
  470.      = T  132x43                     Allstar Peacock (VGA)
  471.      = G   80x43  8x8    720x348     mono        B800 DESQview 2.x+Hercules ***
  472.  23h = T  132x25  6x14                     Tseng Labs EVA
  473.      = T  132x25  8x14         16/256       4    B800 Tseng ET4000 chipset
  474.      = T  132x25  8x14                     Ahead Systems EGA2001
  475.      = T  132x25  8x14          16       4    B800 Ahead B
  476.      = T  132x25  8x8          16        B800 ATI EGA Wonder,ATI VIP
  477.      = T  132x28                     Allstar Peacock (VGA)
  478.      = T  132x28          16             Orchid Prodesigner VGA
  479.  24h = T  132x28  6x13                     Tseng Labs EVA
  480.      = T  132x28  8x13         16/256       4    B800 Tseng ET4000 chipset
  481.      = T  132x28  8x12          16       1    B800 Ahead B
  482.      = T  132x25                     Allstar Peacock (VGA)
  483.      = T  132x25          16             Orchid Prodesigner VGA
  484.  25h = G   80x60  8x8    640x480                 Tseng Labs EVA
  485.      = G   80x60  8x8    640x480     16/256       1    A000 Tseng ET4000 chipset
  486.      = G        640x480      16             VEGA VGA
  487.      = G   80x60  8x8    640x480      16        A000 Orchid Prodesigner VGA
  488.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 26h)
  489.  26h = T   80x60  8x8                     Tseng Labs EVA
  490.      = T   80x60  8x8         16/256       2    B800 Tseng ET4000 chipset
  491.      = G   80x60  8x8    640x480                 Ahead Systems EGA2001
  492.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 25h)
  493.      = T   80x60                     Allstar Peacock (VGA)
  494.      = T   80x60          16             Orchid ProDesigner VGA
  495.  27h = G        720x512      16             VEGA VGA
  496.      = G        720x512      16             Genoa
  497.      = T  132x25  8x8         mono        B000 ATI EGA Wonder,ATI VIP
  498.  28h = T  ???x???                     VEGA VGA
  499.  29h = G        800x600      16             VEGA VGA
  500.      = G  100x37  8x16    800x600      16        A000 Orchid
  501.      = G        800x600      16        A000 STB,Genoa,Sigma
  502.      = G        800x600      16             Allstar Peacock (VGA)
  503.      = G  100x37  8x16    800x600     16/256       1    A000 Tseng ET4000 chipset
  504.  2Ah = T  100x40                     Allstar Peacock (VGA)
  505.      = T  100x40  8x16          16             Orchid Prodesigner VGA
  506.      = T  100x40  8x15        16/256       4    B800 Tseng ET4000 chipset
  507.  2Dh = G        640x350     256             VEGA VGA
  508.      = G        640x350 256/256k    A000 Orchid, Genoa, STB
  509.      = G   80x25  8x14    640x350 256/256k   1    A000 Tseng ET4000 chipset
  510.  2Eh = G        640x480     256             VEGA VGA
  511.      = G   80x30  8x16    640x480 256/256k    A000 Orchid
  512.      = G        640x480 256/256k    A000 STB,Genoa,Sigma
  513.      = G   80x30  8x16    640x480 256/256k   1    A000 Tseng ET4000 chipset
  514.  2Fh = G        720x512     256             VEGA VGA
  515.      = G        720x512     256             Genoa
  516.      = G   80x25  8x16    640x400 256/256k   1    A000 Tseng ET4000 chipset
  517.      = T  160x50  8x8  1280x400   16       4    B800 Ahead B (Wizard/3270)
  518.  30h = G        800x600     256             VEGA VGA
  519.      = G  100x37  8x16    800x600 256/256k    A000 Orchid 
  520.      = G        800x600 256/256k    A000 STB,Genoa,Sigma
  521.      = G        720x350       2             3270 PC
  522.      = G        800x600     256             Cardinal
  523.      = G        ???x???            B800 AT&T 6300
  524.      = G  100x37  8x16    800x600 256/256k   1    A000 Tseng ET4000 chipset
  525.  32h = T   80x34  8x10          16       4    B800 Ahead B (Wizard/3270)
  526.  33h = T  132x44  8x8          16        B800 ATI EGA Wonder,ATI VIP
  527.      = T   80x34  8x8          16       4    B800 Ahead B (Wizard/3270)
  528.  34h = T   80x66  8x8          16       4    B800 Ahead B (Wizard/3270)
  529.  36h = G        960x720      16             VEGA VGA
  530.      = G        960x720      16             STB
  531.  37h = G           1024x768      16             VEGA VGA
  532.      = G  128x48  8x16 1024x768      16        A000 Orchid
  533.      = G           1024x768      16        A000 STB,Genoa,Sigma
  534.      = T  132x44  8x8         mono        B800 ATI EGA Wonder,ATI VIP
  535.  38h = G           1024x768     256             STB VGA/EM-16 Plus (1MB)
  536.      = G  128x48  8x16 1024x768 256/256k   1    A000 Tseng ET4000 chipset
  537.  40h = G   80x25  8x16    640x400       2       1    B800 AT&T 6300, AT&T VDC600
  538.      = G   80x25  8x16    640x400       2       1    B800 Compaq Portable
  539.      = T   80x43                     VEGA VGA, Tecmar VGA/AD
  540.      = T   80x43                     Video7 V-RAM VGA
  541.      = T   80x43                     Tatung VGA
  542.  41h = G        640x200      16       1         AT&T 6300
  543.      = T  132x25                     VEGA VGA
  544.      = T  132x25                     Tatung VGA
  545.      = T  132x25                     Video7 V-RAM VGA
  546.  42h = G   80x25  8x16    640x400      16             AT&T 6300, AT&T VDC600
  547.      = T  132x43                     VEGA VGA
  548.      = T  132x43                     Tatung VGA
  549.      = T  132x43                     Video7 V-RAM VGA
  550.      = T   80x34  9x10           4       4    B800 Ahead B (Wizard/3270)
  551.  43h = G         640x200 of 640x400 viewport     AT&T 6300 (unsupported)
  552.      = T   80x60                     VEGA VGA
  553.      = T   80x60                     Tatung VGA
  554.      = T   80x60                     Video7 V-RAM VGA
  555.      = T   80x45  9x8           4       4    B800 Ahead B (Wizard/3270)
  556.  44h =     disable VDC and DEB output             AT&T 6300
  557.      = T  100x60                     VEGA VGA
  558.      = T  100x60                     Tatung VGA
  559.      = T  100x60                     Video7 V-RAM VGA
  560.  45h = T  132x28                     Tatung VGA
  561.      = T  132x28                     Video7 V-RAM VGA
  562.  46h = G  100x40  8x15    800x600       2             AT&T VDC600
  563.  47h = G  100x37  8x16    800x600      16             AT&T VDC600
  564.  48h = G   80x50  8x8    640x400       2        B800 AT&T 6300, AT&T VDC600
  565.  49h = G   80x30  8x16    640x480                 Lava Chrome II EGA
  566.  4Dh = T  120x25                     VEGA VGA
  567.  4Eh = T  120x43                     VEGA VGA
  568.  4Fh = T  132x25                     VEGA VGA
  569.  50h = G   80x30  8x16    640x480      16             Paradise EGA-480
  570.      = T   80x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  571.      = T   80x34                     Lava Chrome II EGA
  572.      = T   80x43         mono             VEGA VGA
  573.      = G        640x480     mono???         Taxan 565 EGA
  574.      = T  132x25  9x14         mono             Ahead Systems EGA2001
  575.      = T  132x25  9x14           4       4    B800 Ahead B
  576.      = T  132x25  8x14          16       8    B800 OAK Technologies VGA-16
  577.  51h = T   80x30  8x16                     Paradise EGA-480
  578.      = T   80x30                     Lava Chrome II EGA
  579.      = G   80x34  8x14    640x480      16             ATI EGA Wonder
  580.      = T   80x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  581.      = T  132x25         mono             VEGA VGA
  582.      = T  132x43  8x8          16       5    B800 OAK Technologies VGA-16
  583.      = T  132x28  9x12           4       4    B800 Ahead B
  584.  52h = T   80x60                     Lava Chrome II EGA
  585.      = T   80x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  586.      = G   94x29  8x14    752x410      16             ATI EGA Wonder
  587.      = G  100x75  8x8    800x600      16       1    A000 OAK Technologies VGA-16
  588.      = T  132x43         mono             VEGA VGA
  589.      = T  132x44  9x8         mono             Ahead Systems EGA2001
  590.      = T  132x44  9x8           4       2    B800 Ahead B
  591.  53h = G  100x40  8x14    800x560      16             ATI EGA Wonder,ATI VIP
  592.      = T  132x25  8x14         16/256k    B800 Trident TVGA 8800/8900
  593.      = T  132x43                     Lava Chrome II EGA
  594.  54h = G  100x42  8x14    800x600      16        A000 ATI EGA Wonder, VGA Wondr
  595.      = T  132x25                     Lava Chrome II EGA
  596.      = T  132x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  597.      = T  132x43  8x8                     Paradise EGA-480
  598.      = T  132x43  7x9         16/256k    B800 Paradise VGA
  599.      = T  132x43  8x9         16/256k    B800 Paradise VGA on multisync
  600.      = T  132x43                     Taxan 565 EGA
  601.      = T  132x43                     AST VGA Plus
  602.      = T  132x43                     Hewlett-Packard D1180A
  603.      = T  132x43  7x9          16             AT&T VDC600
  604.  55h = T   80x66  8x8         16/256k    A000 ATI VIP
  605.      = T  132x25  8x14                     Paradise EGA-480
  606.      = T  132x25  7x16         16/256k    B800 Paradise VGA
  607.      = T  132x25  8x16         16/256k    B800 Paradise VGA on multisync
  608.      = T  132x25                     Taxan 565 EGA
  609.      = T  132x25                     AST VGA Plus
  610.      = T  132x25                     Hewlett-Packard D1180A
  611.      = T  132x25  7x16          16             AT&T VDC600
  612.      = T  132x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  613.      = G   94x29  8x14    752x410                 Lava Chrome II EGA
  614.      = G  128x48  8x16 1024x768     16/256k    A000 ATI VGA Wonder v4+     *!
  615.  56h = T  132x43  8x8           3???       2    B000 NSI Smart EGA+
  616.      = T  132x43  7x9           4        B000 Paradise VGA
  617.      = T  132x43  8x9           4        B000 Paradise VGA on multisync
  618.      = T  132x43         mono             Taxan 565 EGA
  619.      = T  132x43  7x9           2             AT&T VDC600
  620.      = T  132x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  621.  57h = T  132x25  8x14           3???       4    B000 NSI Smart EGA+
  622.      = T  132x25  7x16           4        B000 Paradise VGA
  623.      = T  132x25  8x16           4        B000 Paradise VGA on multisync
  624.      = T  132x25         mono             Taxan 565 EGA
  625.      = T  132x25  7x16           2             AT&T VDC600
  626.      = T  132x25  9x14         16/256k    B800 Trident TVGA 8800/8900
  627.  58h = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA
  628.      = G  100x75  8x8    800x600      16             AT&T VDC600
  629.      = T   80x33  8x14          16        B800 ATI EGA Wonder,ATI VIP
  630.      = G        800x600      16             AST VGA Plus, Compaq VGA
  631.      = G        800x600      16             Dell VGA
  632.      = G        800x600      16             Hewlett-Packard D1180A
  633.      = T  132x30  9x16         16/256k    B800 Trident TVGA 8800/8900
  634.  59h = G  100x75  8x8    800x600       2        A000 Paradise VGA
  635.      = G  100x75  8x8    800x600       2             AT&T VDC600
  636.      = T   80x66  8x8         16/256k    A000 ATI VIP
  637.      = G        800x600       2             AST VGA Plus, Compaq VGA
  638.      = G        800x600       2             Dell VGA
  639.      = G        800x600       2             Hewlett-Packard D1180A
  640.      = T  132x43  9x11         16/256k    B800 Trident TVGA 8800/8900
  641.  5Ah = T  132x60  9x8         16/256k    B800 Trident TVGA 8800/8900
  642.  5Bh = G        800x600      16             Maxxon, SEFCO TVGA, Imtec
  643.      = G        640x350     256             Genoa 6400
  644.      = T   80x30  8x16                B800 ATI VGA Wonder (undoc)
  645.      = G  100x75  8x8    800x600     16/256k    A000 Trident TVGA 8800, 8900
  646.  5Ch = G        640x400     256             Logix, ATI Prism Elite
  647.      = G        640x400     256             Maxxon, SEFCO TVGA, Imtec
  648.      = G   80x25  8x16    640x400     256/256k    A000 Zymos Poach
  649.      = G   80x25  8x16    640x400     256/256k    A000 Trident TVGA 8800/8900
  650.      = G        640x480     256             Genoa 6400
  651.  5Dh = G        640x480     256             Logix, ATI Prism Elite
  652.      = G        640x480     256             Maxxon, SEFCO TVGA, Imtec
  653.      = G   80x30  8x16    640x480     256/256k    A000 Zymos Poach
  654.      = G   80x30  8x16    640x480     256/256k    A000 Trident TVGA 8800 (512K)
  655.  5Eh = G        640x400     256             Paradise VGA,VEGA VGA
  656.      = G        640x400     256             AST VGA Plus
  657.      = G        640x400     256             Compaq VGA, Dell VGA
  658.      = G   80x25  8x16    640x400     256             AT&T VDC600
  659.      = G        800x600      16             Logix, ATI Prism Elite
  660.      = G        800x600     256             Genoa 6400
  661.      = G  100x75  8x8    800x600     256/256k    A000 Zymos Poach, Trident 8900
  662.  5Fh = G        640x480     256             Paradise VGA
  663.      = G        640x480     256             AST VGA Plus
  664.      = G        640x480     256             Compaq VGA, Dell VGA
  665.      = G        640x480     256             Hewlett-Packard D1180A
  666.      = G   80x30  8x16    640x480     256             AT&T VDC600 (512K)
  667.      = G           1024x768      16             Logix, ATI Prism Elite
  668.      = G           1024x768      16             Maxxon, Genoa 6400, Imtec
  669.      = G  128x48  8x16 1024x768      16/256k    A000 Zymos Poach
  670.      = G  128x48  8x16 1024x768      16/256k    A000 Trident TVGA 88/8900 512K
  671.  60h = G   80x???    ???x400                 Corona/Cordata BIOS 4.10+
  672.      = G        752x410                 VEGA VGA
  673.      = G        752x410      16             Tatung VGA
  674.      = G        752x410      16             Video7 V-RAM VGA
  675.      = G   80x25  8x16  640x400     256       1    A000 Ahead B
  676.      = G  128x48  8x16 1024x768       4/256k    A000 Trident TVGA 8900
  677.      = T  132x25  8x14          16/64       8    B800 Quadram Ultra VGA
  678.  61h = G        ???x400                 Corona/Cordata BIOS 4.10+
  679.      = G        720x540                 VEGA VGA
  680.      = G        720x540      16             Tatung VGA
  681.      = G        720x540      16             Video7 V-RAM VGA
  682.      = G   80x25  8x16    640x400     256        A000 ATI VGA Wonder
  683.      = G   80x30  8x16  640x480     256       1    A000 Ahead B (512K)
  684.      = G   96x64  8x16    768x1024  16/256k    A000 Trident TVGA 88/8900 512K
  685.      = T  132x29  8x12          16/64       8    B800 Quadram Ultra VGA
  686.  62h = G        800x600                 VEGA VGA
  687.      = G        800x600      16             Tatung VGA
  688.      = G        800x600      16             Video7 V-RAM VGA
  689.      = G   80x30  8x16    640x480     256        A000 ATI VGA Wonder
  690.      = G  100x75  8x8   800x600     256       1    A000 Ahead B (512K)
  691.      = G  128x48  8x16 1024x768     256/256k    A000 Trident TVGA 8900, Zymos
  692.      = T  132x32  8x11          16/64       6    B800 Quadram Ultra VGA
  693.  63h = G           1024x768       2             Video7 V-RAM VGA
  694.      = G  100x42  8x14    800x600     256        A000 ATI VGA Wonder
  695.      = G  128x48  7x16 1024x768     256       1    A000 Ahead B (1MB)
  696.      = T  132x44  8x8          16/64       5    B800 Quadram Ultra VGA
  697.  64h = G           1024x768       4             Video7 V-RAM VGA
  698.      = G  128x48  8x16 1024x768     256        A000 ATI VGA Wonder Plus
  699.  65h = G           1024x768      16             Video7 V-RAM VGA
  700.      = G  128x48  8x16 1024x768      16        A000 ATI VGA Wonder
  701.  66h = G        640x400     256             Tatung VGA
  702.      = G        640x400     256             Video7 V-RAM VGA
  703.  67h = G        640x480     256             Video7 V-RAM VGA
  704.      = G  128x48  8x16 1024x768       4        A000 ATI VGA Wonder
  705.  69h = G        720x540     256             Video7 V-RAM VGA
  706.  6Ah = G        800x600      16        A000 VESA standard interface
  707.      = G        800x600      16             Genoa 6400
  708.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (VESA) (see 71h)
  709.      = G        800x600      16             Zymos Poach
  710.      = G        800x600      16             Epson LT-386SX in CRT Mode
  711.      = G        800x600      16             Compuadd 316SL in CRT Mode
  712.      = G  100x42  8x14    800x600            A000 ATI VGA Wonder (undoc)
  713.  70h = G        800x600      16             Cardinal, C&T chipset
  714.      = G   90x28  8x14  720x392   16       1    A000 Ahead B
  715.      = T   40x25  8x8          16       8    B800 Quadram (CGA double scan)
  716.      =     extended mode set (see AX=0070h)         Everex Micro Enhancer EGA
  717.  71h = G  100x35  8x16    800x600     16of64        A000 NSI Smart EGA+
  718.      = G        960x720      16             Cardinal
  719.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (same as 6Ah)
  720.      = T   80x25  8x8          16       8    B800 Quadram (CGA double scan)
  721.  72h = G           1024x768      16             Cardinal, C&T chipset
  722.      = T   80x60  8x8          16        B800 Quadram Ultra VGA
  723.  73h = G   80x60  8x8    640x480      16???        A000 Quadram Ultra VGA
  724.  74h = G        640x400       2        B800 Toshiba 3100 AT&T mode
  725.      = G  128x48  8x16 1024x768      16       1    A000 Ahead B (512K)
  726.      = T   80x66  8x8          16        B800 Quadram Ultra VGA
  727.  75h = G  128x48  8x16 1024x768    4       1    A000 Ahead B
  728.      = G   80x66    640x528      16???        A000 Quadram Ultra VGA
  729.  76h = G  128x48  8x16 1024x768       2       1    A000 Ahead B
  730.      = T   94x29  8x14          16        B800 Quadram Ultra VGA
  731.  77h = G   94x29    752x410      16???        A000 Quadram Ultra VGA
  732.  78h = G        640x400     256             STB VGA/EM-16 Plus
  733.      = G        640x400     256             Cardinal, C&T chipset
  734.      = T  100x75  8x8          16        B800 Quadram Ultra VGA
  735.  79h = G        640x480     256             Cardinal, C&T chipset
  736.      = G  100x75    800x600      16???        A000 Quadram Ultra VGA
  737.  7Ah = G        720x540     256             Cardinal
  738.      = T  114x60  8x8          16        B800 Quadram Ultra VGA
  739.  7Bh = G        800x600     256             Cardinal
  740.      = G  114x60    912x480      16???        A000 Quadram Ultra VGA
  741.  7Ch = G        512x512      16             Genoa
  742.  7Dh = G        512x512     256             Genoa
  743.  7Eh =     special mode set (see AX=007Eh)         Paradise VGA, AT&T VDC600
  744.  7Fh =     special function set (see AX=007Fh)         Paradise VGA, AT&T VDC600
  745.  82h = T   80x25         B&W             AT&T VDC overlay mode *
  746.  83h = T   80x25                     AT&T VDC overlay mode *
  747.  86h = G        640x200     B&W             AT&T VDC overlay mode *
  748.  88h = G   90x43  8x8   720x352  mono        B000 Hercules + MSHERC.COM
  749.  C0h = G        640x400     2/prog pallet         AT&T VDC overlay mode *
  750.  C4h =     disable output                     AT&T VDC overlay mode *
  751.  D0h = G        640x400       2        B800 DEC VAXmate AT&T mode
  752.  
  753.  *  for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
  754.       40h, or 44h
  755.  ** for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
  756.       SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
  757.       otherwise to mode 23h, thus selecting the appropriate (monochrome or
  758.       color) 132x25 character mode.
  759.     for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
  760.       resident
  761.  *** DESQview intercepts calls to change into these two modes (21h is page 0,
  762.       22h is page 1) even if there is no Hercules graphics board installed
  763.  *! ATI BIOS v4-1.00 has a text-scrolling bug in this mode
  764. ----------100070-----------------------------
  765. INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
  766.     AX = 0070h
  767.     BL = mode (see below)
  768. SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
  769.  
  770. Values for video mode:
  771.       text/ text pixel     pixel    colors    disp    scrn  monitor    adapter
  772.       grph resol  box    resoltn        page    addr
  773.  00h = G        640x480      16             multsync    EGA,VGA
  774.  01h = G        752x410      16             multsync    EGA,VGA
  775.  02h = G        800x600      16             multsync    EGA,VGA
  776.  03h = T   80x34                     multsync    EGA,VGA
  777.  04h = T   80x60                     multsync    EGA,VGA
  778.  05h = T   94x29                     multsync    EGA only
  779.  06h = T   94x51                     multsync    EGA only
  780.  07h = T  100x43  8x14          16                VGA only
  781.  08h = T  100x75  8x8          16                VGA only
  782.  09h = T   80x44                     EGA    EGA only
  783.  0Ah = T  132x25                     EGA    EGA,VGA
  784.  0Bh = T  132x44                     EGA    EGA,VGA
  785.  0Ch = T  132x25                     CGA    EGA only
  786.  0Dh = T   80x44                     mono    EGA only
  787.  0Eh = T  132x25                     mono
  788.  0Fh = T  132x44                     mono
  789.  10h =     reserved
  790.  11h = G           1280x350       4                EGA only
  791.  12h = G           1280x600       4                EGA only
  792.  13h = G        640x350     256                EGA only
  793.  14h = G        640x400     256
  794.  15h = G        512x480     256
  795.  16h = T   80x30  8x16         256                VGA only
  796.  18h = T  100x27  8x16          16                VGA only
  797.  20h = G           1024x768      16                Everex 629,678
  798.  21h = T  160x64  8x16 1280x1024  16                1MB VGA only
  799.  30h = G        640x480     256                Everex 629,678
  800.  31h = G        800x600     256                Everex 629,678
  801.  32h = G  128x48  8x16 1024x768     256                1MB VGA only
  802.  40h = T  132x30  8x16          16                VGA only
  803.  50h = T  132x32  8x16         mono                VGA only
  804.  62h = G   40x25  8x8   320x200  32K                Vwpt TC (EV629)
  805.  70h = G   64x30  8x16  512x480  32K                Viewpoint TC
  806.  71h = G   80x30  8x16  640x480  32K                Viewpoint TC
  807.  76h = G   64x30  8x16  512x480  16M                Viewpoint TC
  808.  77h = G   80x30  8x16  640x480  16M                Viewpoint TC
  809. ----------10007E-----------------------------
  810. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
  811.     AX = 007Eh
  812.     BX = horizontal dimension of the mode desired
  813.     CX = vertical dimension of the mode desired
  814.          (both BX/CX in pixels for graphics modes, rows for alpha modes)
  815.     DX = number of colors of the mode desired (0000h for monochrome modes)
  816. Return: BH = 7Eh if successful (Paradise VGA)
  817.     AL = 7Eh if successful (AT&T VDC600)
  818. SeeAlso: AH=00h,AX=0070h,AX=007Fh,AX=6F05h,AH=FFh"GO32"
  819. ----------10007F-----------------------------
  820. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
  821.     AX = 007Fh
  822.     BH = function
  823.         00h     set VGA operation
  824.         01h     set non-VGA operation
  825.         color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation
  826.         monochrome mode 7 will set non-VGA MDA/Hercules operation
  827.         02h     query mode status
  828.         Return: BL = 00h if operating in VGA mode, 01h if non-VGA mode
  829.             CH = total video RAM size in 64k byte units
  830.             CL = video RAM used by the current mode
  831.         03h     lock current mode
  832.         allows current mode (VGA or non-VGA) to survive re-boot
  833.         04h     enter CGA mode (AT&T VDC600 only)
  834.         05h     enter MDA mode (AT&T VDC600 only)
  835.         0Ah,0Bh,0Ch,0Dh,0Eh,0Fh  WRITE PARADISE REGISTERS 0,1,2,3,4,5
  836.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  837.         BL = value to set in the paradise register
  838.         1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
  839.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  840.         Return: BL = value of the paradise register
  841.             BH = 7Fh if successful
  842. Return: AL = 7Fh if successful (AT&T VDC600)
  843. SeeAlso: AX=007Eh
  844. ----------1001-------------------------------
  845. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  846.     AH = 01h
  847.     CH = bit 7    should be zero
  848.          bits 6,5 cursor blink
  849.              (00=normal, 01=invisible, 10=erratic, 11=slow)
  850.              (00=normal, other=invisible on EGA/VGA)
  851.          bits 4-0 top scan line containing cursor
  852.     CL = bottom scan line containing cursor (bits 0-4)
  853. Notes:    buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  854.       returns unmapped cursor shape
  855.     UltraVision scales size to the current font height by assuming 14-line
  856.       monochrome and 8-line color fonts; this call is not valid if cursor
  857.       emulation has been disabled
  858.     applications which wish to change the cursor by programming the
  859.       hardware directly on EGA or abovve should call INT 10/AX=1130h or
  860.       read 0040h:0085h first to determine the current font height
  861. BUG:    AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  862.       is not equal to the current video mode
  863. SeeAlso: AH=03h,AX=CD05h
  864. ----------1002-------------------------------
  865. INT 10 - VIDEO - SET CURSOR POSITION
  866.     AH = 02h
  867.     BH = page number
  868.         0-3 in modes 2&3
  869.         0-7 in modes 0&1
  870.         0 in graphics modes
  871.     DH = row (00h is top)
  872.     DL = column (00h is left)
  873. SeeAlso: AH=03h,AH=05h
  874. ----------1003-------------------------------
  875. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  876.     AH = 03h
  877.     BH = page number
  878.         0-3 in modes 2&3
  879.         0-7 in modes 0&1
  880.         0 in graphics modes
  881. Return: AX = 0000h (Phoenix BIOS)
  882.     CH = start scan line
  883.     CL = end scan line
  884.     DH = row (00h is top)
  885.     DL = column (00h is left)
  886. Notes:    a separate cursor is maintained for each of up to 8 display pages
  887.     many ROM BIOSes incorrectly return the default size for a color display
  888.       (start 06h, end 07h) when a monochrome display is attached
  889. SeeAlso: AH=01h,AH=02h
  890. ----------1004-------------------------------
  891. INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
  892.     AH = 04h
  893. Return: AH = light pen trigger flag
  894.         00h not down/triggered
  895.         01h down/triggered
  896.         DH,DL = row,column of character light pen is on
  897.         CH = pixel row (graphics modes 04h-06h)
  898.         CX = pixel row (graphics modes with >200 rows)
  899.         BX = pixel column
  900. Notes:    on a CGA, returned column numbers are always multiples of 2 (320-
  901.       column modes) or 4 (640-column modes)
  902.     returned row numbers are only accurate to two lines
  903. ----------1005-------------------------------
  904. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  905.     AH = 05h
  906.     AL = new page number (00h to number of pages - 1) (see AH=00h)
  907. SeeAlso: AH=0Fh
  908. ----------1005-------------------------------
  909. INT 10 - VIDEO - MANIPULATE CRT/CPU PAGE REGISTERS (PCjr)
  910.     AH = 05h
  911.     AL = subfunction
  912.         80h read CRT and CPU page registers
  913.         Return: BH = CRT page register
  914.             BL = CPU page register
  915.         81h set CPU page register
  916.         BL = CPU page
  917.         82h set CRT page register
  918.         BH = CRT page
  919.         83h set both CPU and CRT page registers
  920.         BL = CPU page
  921.         BH = CRT page
  922. Notes:    the CPU page determines which 16K block of the first 128K of physical
  923.       memory will be mapped at B800h by the hardware
  924.     the CRT page determines the start address of the memory used by the
  925.       video controller
  926. ----------1005-------------------------------
  927. INT 10 - VIDEO - GRAPHICS BITMAP BUFFER (Corona/Cordata BIOS v4.10+)
  928.     AH = 05h
  929.     AL =
  930.         00h set address of graphics bitmap buffer (video modes 60h,61h)
  931.         BX = segment of buffer
  932.         0Fh get address of graphics bitmap buffer (video modes 60h,61h)
  933.         Return: DX = segment of graphics bitmap buffer
  934. ----------1006-------------------------------
  935. INT 10 - VIDEO - SCROLL UP WINDOW
  936.     AH = 06h
  937.     AL = number of lines by which to scroll up (00h = clear entire window)
  938.     BH = attribute used to write blank lines at bottom of window
  939.     CH,CL = row,column of window's upper left corner
  940.     DH,DL = row,column of window's lower right corner
  941. Note:    affects only the currently active page (see AH=05h)
  942. Warning: some implementations have a bug which destroys BP
  943. SeeAlso: AH=07h,AH=72h,AH=73h
  944. ----------1007-------------------------------
  945. INT 10 - VIDEO - SCROLL DOWN WINDOW
  946.     AH = 07h
  947.     AL = number of lines by which to scroll down (00h=clear entire window)
  948.     BH = attribute used to write blank lines at top of window
  949.     CH,CL = row,column of window's upper left corner
  950.     DH,DL = row,column of window's lower right corner
  951. Note:    affects only the currently active page (see AH=05h)
  952. Warning: some implementations have a bug which destroys BP
  953. SeeAlso: AH=06h,AH=72h,AH=73h
  954. ----------1008-------------------------------
  955. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  956.     AH = 08h
  957.     BH = page number (00h to number of pages - 1) (see AH=00h)
  958. Return: AH = attribute
  959.         bit 7: blink
  960.         bits 6-4: background color
  961.             000 black
  962.             001 blue
  963.             010 green
  964.             011 cyan
  965.             100 red
  966.             101 magenta
  967.             110 brown
  968.             111 white
  969.         bits 3-0: foreground color
  970.             0000 black     1000 dark gray
  971.             0001 blue     1001 light blue
  972.             0010 green     1010 light green
  973.             0011 cyan     1011 light cyan
  974.             0100 red     1100 light red
  975.             0101 magenta     1101 light magenta
  976.             0110 brown     1110 yellow
  977.             0111 light gray     1111 white
  978.     AL = character
  979. Notes:    for monochrome displays, a foreground of 1 with background 0 is
  980.       underlined 
  981.     the blink bit may be reprogrammed to enable intense background colors
  982.       using AX=1003h or by programming the CRT controller
  983. SeeAlso: AH=09h,AX=1003h
  984. ----------1009-------------------------------
  985. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  986.     AH = 09h
  987.     AL = character to display
  988.     BH = page number (00h to number of pages - 1) (see AH=00h)
  989.     BL = attribute (text mode) or color (graphics mode)
  990.          if bit 7 set in graphics mode, character is xor'ed onto screen
  991.     CX = number of times to write character
  992. Notes:    all characters are displayed, including CR, LF, and BS
  993.     replication count in CX may produce an unpredictable result in graphics
  994.       modes if it is greater than the number of positions remaining in the
  995.       current row
  996. SeeAlso: AH=08h,AH=0Ah,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  997. ----------100A-------------------------------
  998. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  999.     AH = 0Ah
  1000.     AL = character to display
  1001.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1002.     BL = attribute (PCjr only) or color (graphics mode)
  1003.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1004.     CX = number of times to write character
  1005. Notes:    all characters are displayed, including CR, LF, and BS
  1006.     replication count in CX may produce an unpredictable result in graphics
  1007.       modes if it is greater than the number of positions remaining in the
  1008.       current row
  1009. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  1010. ----------100B--BH00-------------------------
  1011. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  1012.     AH = 0Bh
  1013.     BH = 00h
  1014.     BL = background/border color (border only in text modes)
  1015. SeeAlso: AH=0Bh/BH=01h
  1016. ----------100B--BH01-------------------------
  1017. INT 10 - VIDEO - SET PALETTE
  1018.     AH = 0BH
  1019.     BH = 01h
  1020.     BL = palette ID
  1021.         00h background, green, red, and brown/yellow
  1022.         01h background, cyan, magenta, and white
  1023. SeeAlso: AH=0Bh/BH=00h
  1024. ----------100C-------------------------------
  1025. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  1026.     AH = 0Ch
  1027.     BH = page number
  1028.     AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  1029.     CX = column
  1030.     DX = row
  1031. Notes:    valid only in graphics modes
  1032.     BH is ignored if the current video mode supports only one page
  1033. SeeAlso: AH=0Dh,AH=46h
  1034. ----------100D-------------------------------
  1035. INT 10 - VIDEO - READ GRAPHICS PIXEL
  1036.     AH = 0Dh
  1037.     BH = page number
  1038.     CX = column
  1039.     DX = row
  1040. Return: AL = pixel color
  1041. Notes:    valid only in graphics modes
  1042.     BH is ignored if the current video mode supports only one page
  1043. SeeAlso: AH=0Ch,AH=47h
  1044. ----------100E-------------------------------
  1045. INT 10 - VIDEO - TELETYPE OUTPUT
  1046.     AH = 0Eh
  1047.     AL = character to write
  1048.     BH = page number
  1049.     BL = foreground color (graphics modes only)
  1050. Notes:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  1051.       and do the expected things
  1052.     IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  1053.       the current active page
  1054. SeeAlso: AH=02h,AH=0Ah
  1055. ----------100F-------------------------------
  1056. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  1057.     AH = 0Fh
  1058. Return: AH = number of character columns
  1059.     AL = display mode (see AH=00h)
  1060.     BH = active page (see AH=05h)
  1061. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1062.       also have bit 7 set
  1063.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1064.       (monochrome) in all extended-row text modes
  1065. SeeAlso: AH=00h,AH=05h,AX=1130h,AX=CD04h
  1066. ----------100F56BX4756-----------------------
  1067. INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
  1068.     AX = 0F56h
  1069.     BX = 4756h
  1070.     CX = 4944h
  1071.     DL = function
  1072.         01h installation check
  1073.         Return: AX = 5649h
  1074.             BX = 4443h
  1075.             CX = 5647h
  1076.             DH = 01h
  1077.         02h get first video mode's parameters
  1078.         Return: AX = BIOS mode number
  1079.             BX = widht in pixels
  1080.             CX = height in pixels
  1081.             DX = number of colors
  1082.         03h get next video mode's parameters
  1083.         Return: as for DL=02h
  1084.         04h display line???
  1085.         ES:DI -> record (see below)
  1086.         ???
  1087.         Return: ???
  1088. Notes:    VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
  1089.     the use of TSR display drivers was discontinued after v2.20
  1090.  
  1091. Format of record for DL=04h:
  1092. Offset    Size    Description
  1093.  00h    WORD    row number
  1094.  02h    WORD    starting column???
  1095.  04h    WORD    ending column???
  1096.     ???
  1097. ----------1010-------------------------------
  1098. INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
  1099.     AH = 10h
  1100.     CH,CL = row,column of upper left corner of window
  1101.     DH,DL = row,column of lower right corner of window
  1102. Return: AL = status
  1103.         00h successful
  1104.         01h failed
  1105.     AH destroyed
  1106. Notes:    BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1107.     when a window has been set, all output via AH=0Eh is restricted to
  1108.       the specified window
  1109. SeeAlso: AH=11h"Window",AH=12h"Window"
  1110. ----------101000----------------------------
  1111. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
  1112.     AX = 1000h
  1113.     BL = palette register number (00h-0Fh)
  1114.        = attribute register number (undocumented)
  1115.          10h attribute mode control register (should let BIOS control this)
  1116.          11h overscan color register (see also AX=1001h)
  1117.          12h color plane enable register (bits 3-0 enable corresponding
  1118.              text attribute bit)
  1119.          13h horizontal PEL panning register
  1120.          14h color select register
  1121.     BH = color or attribute register value
  1122. Notes:    on MCGA, only BX = 0712h is supported
  1123.     under UltraVision, the palette locking status (see AX=CD01h)
  1124.       determines the outcome
  1125. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  1126. ----------101001-----------------------------
  1127. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
  1128.     AX = 1001h
  1129.     BH = border color (00h-3Fh)
  1130. BUG:    the original IBM VGA BIOS incorrectly updates the parameter save area
  1131.       and places the border color at offset 11h of the palette table
  1132.       rather than offset 10h
  1133. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1134.       determines the outcome
  1135. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  1136. ----------101002-----------------------------
  1137. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
  1138.     AX = 1002h
  1139.     ES:DX -> palette register list
  1140. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1141.       determines the outcome
  1142. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  1143.  
  1144. Format of palette register list:
  1145. Offset    Size    Description
  1146.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  1147.  10h    BYTE    border color
  1148. ----------101003-----------------------------
  1149. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  1150.     AX = 1003h
  1151.     BL = new state
  1152.         00h background intensity enabled
  1153.         01h blink enabled
  1154. Note:    although there is no function to get the current status, bit 5 of
  1155.       0040h:0065h indicates the state
  1156. SeeAlso: AH=08h
  1157. ----------101007-----------------------------
  1158. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  1159.     AX = 1007h
  1160.     BL = palette or attribute (undoc) register number (see AX=1000h)
  1161. Return: BH = palette or attribute register value
  1162. Notes:    UltraVision v2+ supports this function even on color EGA systems in
  1163.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1164.       registers will cause incorrect results because the EGA registers are
  1165.       write-only.  To guard against older versions or unsupported video
  1166.       modes, programs which expect to use this function on EGA systems
  1167.       should set BH to FFh on entry.
  1168. SeeAlso: AX=1000h,AX=1009h
  1169. ----------101008-----------------------------
  1170. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  1171.     AX = 1008h
  1172. Return: BH = border color (00h-3Fh)
  1173. Notes:    UltraVision v2+ supports this function even on color EGA systems in
  1174.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1175.       registers will cause incorrect results because the EGA registers are
  1176.       write-only.  To guard against older versions or unsupported video
  1177.       modes, programs which expect to use this function on EGA systems
  1178.       should set BH to FFh on entry.
  1179. SeeAlso: AX=1001h
  1180. ----------101009-----------------------------
  1181. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  1182.     AX = 1009h
  1183.     ES:DX -> 17-byte buffer (see AX=1002h)
  1184. Notes:    UltraVision v2+ supports this function even on color EGA systems in
  1185.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1186.       registers will cause incorrect results because the EGA registers are
  1187.       write-only.  To guard against older versions or unsupported video
  1188.       modes, programs which expect to use this function on EGA systems
  1189.       should set the ES:DX buffer to FFh before calling.
  1190. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  1191. ----------101010-----------------------------
  1192. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1193.     AX = 1010h
  1194.     BX = register number
  1195.     CH = new value for green (0-63)
  1196.     CL = new value for blue (0-63)
  1197.     DH = new value for red (0-63)
  1198. SeeAlso: AX=1012h,AX=1015h
  1199. ----------101012-----------------------------
  1200. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  1201.     AX = 1012h
  1202.     BX = starting color register
  1203.     CX = number of registers to set
  1204.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  1205.          byte each of red, green and blue (0-63)
  1206. SeeAlso: AX=1010h,AX=1017h
  1207. ----------101013-----------------------------
  1208. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  1209.     AX = 1013h
  1210.     BL = subfunction
  1211.         00h select paging mode
  1212.         BH = 00h select 4 blocks of 64
  1213.         BH = 01h select 16 blocks of 16
  1214.         01h select page
  1215.         BH = page number (00h to 03h) or (00h to 0Fh)
  1216. Note:    not valid in mode 13h
  1217. SeeAlso: AX=101Ah
  1218. ----------101015-----------------------------
  1219. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1220.     AX = 1015h
  1221.     BL = palette register number
  1222. Return: DH = red value
  1223.     CH = green value
  1224.     CL = blue value
  1225. SeeAlso: AX=1010h,AX=1017h
  1226. ----------101017-----------------------------
  1227. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  1228.     AX = 1017h
  1229.     BX = starting palette register
  1230.     CX = number of palette registers to read
  1231.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  1232. Return: buffer filled with CX red, green and blue triples
  1233. SeeAlso: AX=1012h,AX=1015h
  1234. ----------101018-----------------------------
  1235. INT 10 - VIDEO - undocumented - SET PEL MASK (VGA/MCGA)
  1236.     AX = 1018h
  1237.     BL = new PEL value
  1238. SeeAlso: AX=1019h
  1239. ----------101019-----------------------------
  1240. INT 10 - VIDEO - undocumented - READ PEL MASK (VGA/MCGA)
  1241.     AX = 1019h
  1242. Return:    BL = value read
  1243. SeeAlso: AX=1018h
  1244. ----------10101A-----------------------------
  1245. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  1246.     AX = 101Ah
  1247. Return: BL = paging mode
  1248.         00h four pages of 64
  1249.         01h sixteen pages of 16
  1250.     BH = current page
  1251. SeeAlso: AX=1013h
  1252. ----------10101B-----------------------------
  1253. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  1254.     AX = 101Bh
  1255.     BX = starting palette register
  1256.     CX = number of registers to convert
  1257. SeeAlso: AH=12h/BL=33h
  1258. ----------1010F0-----------------------------
  1259. INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
  1260.     AX = 10F0h
  1261.     BL = video mode (see also AH=00h)
  1262.         32768-color modes:
  1263.         13h = 320x200
  1264.         2Dh = 640x350
  1265.         2Eh = 640x480
  1266.         2Fh = 640x400
  1267.         30h = 800x600
  1268. Return:    AX = 0000h if successful
  1269.          other on error
  1270. Note:    the Tseng HiColor BIOS extensions are supported by:
  1271.       Diamond Computer Systems    SpeedStar HiColor VGA
  1272.       Everex Systems        HC VGA
  1273.       Focus Information Systems    2theMax 4000
  1274.       Cardinal Technologies        VGA732
  1275. SeeAlso: AX=10F1h
  1276. ----------1010F1-----------------------------
  1277. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
  1278.     AX = 10F1h
  1279. Return: BL = type of digital/analog converter
  1280.         00h normal VGA DAC
  1281.         01h Sierra SC1148x HiColor DAC
  1282.        else other HiColor DAC
  1283. SeeAlso: AX=10F0h
  1284. ----------1011-------------------------------
  1285. INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
  1286.     AH = 11h
  1287. Return: CH,CL = row,column of upper left corner
  1288.     DH,DL = row,column of lower right corner
  1289. Note:    BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1290. SeeAlso: AH=10h"Window",AH=12h"Window"
  1291. ----------1011-------------------------------
  1292. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1293.     AH = 11h
  1294.     The following functions will cause a mode set, completely resetting
  1295.     the video environment, but without clearing the video buffer
  1296.     AL = 00h, 10h: load user-specified patterns
  1297.         ES:BP -> user table
  1298.         CX      = count of patterns to store
  1299.         DX      = character offset into map 2 block
  1300.         BL      = block to load in map 2
  1301.         BH      = number of bytes per character pattern
  1302.     AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  1303.         BL      = block to load
  1304.     AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  1305.         BL      = block to load
  1306.     AL = 03h: set block specifier
  1307.         BL      = block specifier
  1308.            (EGA/MCGA) bits 0,1 = block selected by chars with attribute
  1309.                      bit 3 = 0
  1310.                   bits 2,3 = block selected by chars with attribute
  1311.                      bit 3 = 1
  1312.            (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
  1313.              bits 2,3,5 = block selected by attribute bit 3 = 1
  1314.     AL = 04h, 14h: load ROM 8x16 character set (VGA)
  1315.         BL    = block to load
  1316.     The routines called with AL=1xh are designed to be called only
  1317.     immediately after a mode set and are similar to the routines called
  1318.     with AL=0xh, except that:
  1319.           Page 0 must be active.
  1320.           Bytes/character is recalculated.
  1321.           Max character rows is recalculated.
  1322.           CRT buffer length is recalculated.
  1323.           CRTC registers are reprogrammed as follows:
  1324.              R09 = bytes/char-1 ; max scan line (mode 7 only)
  1325.              R0A = bytes/char-2 ; cursor start
  1326.              R0B = 0        ; cursor end
  1327.              R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  1328.              R14 = bytes/char    ; underline loc
  1329.                (*** BUG: should be 1 less ***)
  1330. SeeAlso: AX=CD10h
  1331. ----------1011-------------------------------
  1332. INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1333.     AH = 11h
  1334.     AL = 20h: set user 8 by 8 graphics characters (INT 1F)
  1335.         ES:BP -> user table
  1336.     AL = 21h: set user graphics characters
  1337.         ES:BP -> user table
  1338.         CX      = bytes per character
  1339.         BL      = row specifier
  1340.            00h user set
  1341.               DL = number of rows
  1342.            01h 14 rows
  1343.            02h 25 rows
  1344.            03h 43 rows
  1345.     AL = 22h: ROM 8 by 14 set
  1346.         BL = row specifier (see above)
  1347.     AL = 23h: ROM 8 by 8 double dot
  1348.         BL = row specifier (see above)
  1349.     AL = 24h: load 8x16 graphics characters (VGA/MCGA)
  1350.         BL = row specifier (see above)
  1351.     AL = 29h: load 8x16 graphics characters (Compaq Systempro)
  1352.         BL = row specifier (see above)
  1353. Notes:    these functions are meant to be called only after a mode set
  1354.     UltraVision v2+ sets INT 43 to the appropriate font for AL=22h,23h,24h,
  1355.       and 29h
  1356. SeeAlso: INT 1F, INT 43
  1357. ----------101130-----------------------------
  1358. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  1359.     AX = 1130h
  1360.     BH = pointer specifier
  1361.         00h INT 1Fh pointer
  1362.         01h INT 43h pointer
  1363.         02h ROM 8x14 character font pointer
  1364.         03h ROM 8x8 double dot font pointer
  1365.         04h ROM 8x8 double dot font (high 128 characters)
  1366.         05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  1367.         06h ROM 8x16 font (MCGA, VGA)
  1368.         07h ROM alternate 9x16 font (VGA only)
  1369.         11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  1370.         12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  1371. Return: ES:BP = specified pointer
  1372.     CX    = bytes/character
  1373.     DL    = character rows on screen - 1
  1374. Note:    for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  1375.       8xN font at ES:BP+256N
  1376. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  1377. ----------1012-------------------------------
  1378. INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
  1379.     AH = 12h
  1380. Return: BH = attribute to use on blanked lines when scrolling
  1381. Note:    BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1382. SeeAlso: AH=11h"Window",AH=12h"Window"
  1383. ----------1012--BL10-------------------------
  1384. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  1385.     AH = 12h
  1386.     BL = 10h
  1387. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  1388.          01h mono mode in effect (I/O port 3Bxh)
  1389.     BL = 00h  64k bytes memory installed
  1390.          01h 128k bytes memory installed
  1391.          02h 192k bytes memory installed
  1392.          03h 256k bytes memory installed
  1393.     CH = feature bits
  1394.     CL = switch settings
  1395. ----------1012--BL20-------------------------
  1396. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  1397.     AH = 12h
  1398.     BL = 20h  select alternate print screen routine
  1399. Notes:    installs a PrtSc routine from the video card's BIOS to replace the
  1400.       default PrtSc handler from the ROM BIOS, which usually does not
  1401.       understand screen heights other than 25 lines
  1402.     some adapters disable print-screen instead of enhancing it
  1403. SeeAlso: INT 05
  1404. ----------1012--BL30-------------------------
  1405. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  1406.     AH = 12h
  1407.     BL = 30h
  1408.     AL = vertical resolution
  1409.          00h 200 scan lines
  1410.          01h 350 scan lines
  1411.          02h 400 scan lines
  1412. Return: AL = 12h if function supported
  1413. ----------1012--BL31-------------------------
  1414. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  1415.     AH = 12h
  1416.     BL = 31h
  1417.     AL = 00h enable default palette loading
  1418.          01h disable default palette loading
  1419. Return: AL = 12h if function supported
  1420. ----------1012--BL32-------------------------
  1421. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  1422.     AH = 12h
  1423.     BL = 32h
  1424.     AL = 00h enable video addressing
  1425.          01h disable video addressing
  1426. Return: AL = 12h if function supported
  1427. ----------1012--BL33-------------------------
  1428. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  1429.     AH = 12h
  1430.     BL = 33h
  1431.     AL = 00h enable gray scale summing
  1432.          01h disable gray scale summing
  1433. Return: AL = 12h if function supported
  1434. SeeAlso: AX=101Bh,AX=BF06h
  1435. ----------1012--BL34-------------------------
  1436. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  1437.     AH = 12h
  1438.     BL = 34h
  1439.     AL = 00h enable alphanumeric cursor emulation
  1440.          01h disable alphanumeric cursor emulation
  1441. Return: AL = 12h if function supported
  1442. ----------1012--BL35-------------------------
  1443. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  1444.     AH = 12h
  1445.     BL = 35h
  1446.     AL = 00h initial adapter video off
  1447.          01h initial planar video on
  1448.          02h switch active video off
  1449.          03h switch inactive video on
  1450.          80h *UNDOCUMENTED* set system board video active flag
  1451.     ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
  1452. Return: AL = 12h if function supported
  1453. ----------1012--BL36-------------------------
  1454. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  1455.     AH = 12h
  1456.     BL = 36h
  1457.     AL = 00h enable refresh
  1458.          01h disable refresh
  1459. Return: AL = 12h if function supported
  1460. ----------1012--BH55-------------------------
  1461. INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
  1462.     AH = 12h
  1463.     BH = 55h
  1464.     BL = subfunction
  1465.         00h disabled enhanced features
  1466.         01h enable enhanced features
  1467.         02h get status
  1468.         Return: AL = status flags
  1469.                 bit 3: set if enhanced features enabled
  1470.                 bits 7-5 monitor type
  1471.                 000 PS/2 mono
  1472.                 001 PS/2 color
  1473.                 010 multi-sync
  1474.                 011 Taxan 650 25kHz
  1475.                 100 RGB
  1476.                 101 mono
  1477.                 110 EGA
  1478.                 111 Compaq internal
  1479.         03h disable register trapping (CGA emulation)
  1480.         04h enable register trapping
  1481.         05h program mode described by table at ES:BP
  1482.         06h get mode table
  1483.         AL = video mode
  1484.         Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
  1485.             BP = FFFFh on error
  1486.  
  1487. Format of ATI VGA Wonder video mode table:
  1488. Offset    Size    Description
  1489.  00h    BYTE    number of columns
  1490.  01h    BYTE    maximum row (number of rows - 1)
  1491.  02h    BYTE    scan lines per row
  1492.  03h    WORD    video buffer size in bytes
  1493.  05h  4 BYTEs    values for Sequencer registers 1-4
  1494.  09h    BYTE    value for Miscellaneous Output register
  1495.  0Ah 25 BYTEs    values for CRTC registers 00h-18h
  1496.         00h horizontal total size (chars)
  1497.         01h horizontal displayed (chars)
  1498.         02h horizontal sync position (chars)
  1499.         03h horizontal sync width (chars)
  1500.         04h vertical total size (char rows)
  1501.         05h vertical total adjust (scan lines)
  1502.         06h vertical displayed (char rows)
  1503.         07h vertical sync position (char rows)
  1504.         08h interlace mode
  1505.         09h max scan line in row
  1506.         0Ah cursor start scan line
  1507.         0Bh cursor end scan line
  1508.         0Ch screen memory start (high)
  1509.         0Dh screen memory start (low)
  1510.         0Eh cursor address (high)
  1511.         0Fh cursor address (low)
  1512.         10h light pen (high)
  1513.         11h light pen (low)
  1514.  23h 20 BYTEs    default palette (values for Attribute Controller regs 00h-13h)
  1515.  37h  9 BYTEs    values for Graphics Controller registers 00h-08h
  1516. ----------1013-------------------------------
  1517. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  1518.     AH = 13h
  1519.     AL = write mode
  1520.        bit 0: update cursor after writing
  1521.            1: string contains alternating characters and attributes
  1522.     BH = page number
  1523.     BL = attribute if string contains only characters
  1524.     CX = number of characters in string
  1525.     DH,DL = row,column at which to start writing
  1526.     ES:BP -> string to write
  1527. Notes:    recognizes CR, LF, BS, and bell
  1528.     also available PC or XT with EGA or higher
  1529. BUG:    on the IBM VGA Adapter, any scrolling which may occur is performed on
  1530.       the active page rather than the requested page
  1531. SeeAlso: AH=09h,AH=0Ah
  1532. ----------101400-----------------------------
  1533. INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
  1534.     AX = 1400h
  1535.     ES:DI -> character font
  1536.     BH = number of bytes per character
  1537.         08h or 10h (Compaq)
  1538.     BL = 00h load main font (block 0)
  1539.          01h load alternate font (block 1)
  1540.     CX = number of characters to store
  1541.     DX = character offset into RAM font area
  1542. SeeAlso: AH=11h,AX=1401h
  1543. ----------101401-----------------------------
  1544. INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
  1545.     AX = 1401h
  1546.     BL = font to load
  1547.         00h main font (block 0)
  1548.         01h alternate font (block 1)
  1549. SeeAlso: AH=11h,AX=1400h
  1550. ----------101402-----------------------------
  1551. INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
  1552.     AX = 1402h
  1553.     BL = function
  1554.         00h ignore high intensity attribute
  1555.         01h map high intensity to underscore
  1556.         02h map high intensity to reverse video
  1557.         03h map high intensity to selected alternate font
  1558.         B0h half intensity (Compaq)
  1559.         B1h toggle active intensity bit interpretation (CP386)
  1560. ----------1015-------------------------------
  1561. INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
  1562.     AH = 15h
  1563. Return: AX = alternate display adapter type
  1564.         0000h none
  1565.         5140h LCD
  1566.         5153h CGA
  1567.         5151h mono
  1568.     ES:DI -> parameter table (see below)
  1569. SeeAlso: AH=1Bh
  1570.  
  1571. Format of display parameter table:
  1572. Offset    Size    Description
  1573.  00h    WORD    monitor model number
  1574.  02h    WORD    vertical pixels per meter
  1575.  04h    WORD    horizontal pixels per meter
  1576.  06h    WORD    total vertical pixels
  1577.  08h    WORD    total horizontal pixels
  1578.  0Ah    WORD    horizontal pixel separation in micrometers
  1579.  0Ch    WORD    vertical pixel separation in micrometers
  1580. ----------1015-------------------------------
  1581. INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
  1582.     AH = 15h
  1583.     AL = superimpose mode
  1584.         00h show graphics screen
  1585.         01h show text screen
  1586.         02h show text screen superimposed on graphics screen
  1587. ----------101A-------------------------------
  1588. INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
  1589.     AH = 1Ah
  1590.     AL = 00h read display combination code
  1591.         Return: BL = active display code (see below)
  1592.             BH = alternate display code
  1593.          01h set display combination code
  1594.         BL = active display code (see below)
  1595.         BH = alternate display code
  1596. Return: AL = 1Ah if function was supported
  1597.  
  1598. Values for display combination code:
  1599.     00h no display
  1600.     01h monochrome adapter w/ monochrome display
  1601.     02h CGA w/ color display
  1602.     03h reserved
  1603.     04h EGA w/ color display
  1604.     05h EGA w/ monochrome display
  1605.     06h PGA w/ color display
  1606.     07h VGA w/ monochrome analog display
  1607.     08h VGA w/ color analog display
  1608.     09h reserved
  1609.     0Ah MCGA w/ digital color display
  1610.     0Bh MCGA w/ monochrome analog display
  1611.     0Ch MCGA w/ color analog display
  1612.     FFh unknown display type
  1613. ----------101B-------------------------------
  1614. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  1615.     AH = 1Bh
  1616.     BX = implementation type
  1617.         0000h return funtionality/state information
  1618.     ES:DI -> 64 byte buffer for state information (see below)
  1619. Return: AL = 1Bh if function supported
  1620.         ES:DI buffer filled with state information
  1621. SeeAlso: AH=15h
  1622.  
  1623. Format of state information:
  1624. Offset    Size    Description
  1625.  00h    DWORD    address of static funtionality table (see below)
  1626.  04h    BYTE    video mode in effect
  1627.  05h    WORD    number of columns
  1628.  07h    WORD    length of regen buffer in bytes
  1629.  09h    WORD    starting address of regen buffer
  1630.  0Bh    WORD    cursor position for page 0
  1631.  0Dh    WORD    cursor position for page 1
  1632.  0Fh    WORD    cursor position for page 2
  1633.  11h    WORD    cursor position for page 3
  1634.  13h    WORD    cursor position for page 4
  1635.  15h    WORD    cursor position for page 5
  1636.  17h    WORD    cursor position for page 6
  1637.  19h    WORD    cursor position for page 7
  1638.  1Bh    WORD    cursor type
  1639.  1Dh    BYTE    active display page
  1640.  1Eh    WORD    CRTC port address
  1641.  20h    BYTE    current setting of register (3?8)
  1642.  21h    BYTE    current setting of register (3?9)
  1643.  22h    BYTE    number of rows
  1644.  23h    WORD    bytes/character
  1645.  25h    BYTE    display combination code of active display
  1646.  26h    BYTE    DCC of alternate display
  1647.  27h    WORD    number of colors supported in current mode
  1648.  29h    BYTE    number of pages supported in current mode
  1649.  2Ah    BYTE    number of scan lines active
  1650.         (0,1,2,3) = (200,350,400,480)
  1651.  2Bh    BYTE    primary character block
  1652.  2Ch    BYTE    secondary character block
  1653.  2Dh    BYTE    miscellaneous flags
  1654.         bit 0 all modes on all displays on
  1655.             1 gray summing on
  1656.             2 monochrome display attached
  1657.             3 default palette loading disabled
  1658.             4 cursor emulation enabled
  1659.             5 0 = intensity; 1 = blinking
  1660.             6 PS/2 P70 plasma display (without 9-dot wide font) active
  1661.             7 reserved
  1662.  2Eh  3 BYTEs    reserved (00h)
  1663.  31h    BYTE    video memory available
  1664.         00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  1665.  32h    BYTE    save pointer state flags
  1666.         bit 0 512 character set active
  1667.             1 dynamic save area present
  1668.             2 alpha font override active
  1669.             3 graphics font override active
  1670.             4 palette override active
  1671.             5 DCC override active
  1672.             6 reserved
  1673.             7 reserved
  1674.  33h 13 BYTEs    reserved (00h)
  1675.  
  1676. Format of Static Functionality Table:
  1677. Offset    Size    Description
  1678.  00h    BYTE    modes supported #1
  1679.         bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  1680.  01h    BYTE    modes supported #2
  1681.         bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  1682.  02h    BYTE    modes supported #3
  1683.         bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  1684.         bit 4 to bit 7 reserved
  1685.  03h  4 BYTEs    reserved
  1686.  07h    BYTE    scan lines supported
  1687.         bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  1688.  08h    BYTE    total number of character blocks available in text modes
  1689.  09h    BYTE    maximum number of active character blocks in text modes
  1690.  0Ah    BYTE    miscellaneous function flags #1
  1691.         bit 0 all modes on all displays function supported
  1692.             1 gray summing function supported
  1693.             2 character font loading function supported
  1694.             3 default palette loading enable/disable supported
  1695.             4 cursor emulation function supported
  1696.             5 EGA palette present
  1697.             6 color palette present
  1698.             7 color paging function supported
  1699.  0Bh    BYTE    miscellaneous function flags #2
  1700.         bit 0 light pen supported
  1701.             1 save/restore state function 1Ch supported
  1702.             2 intensity blinking function supported
  1703.             3 Display Combination Code supported
  1704.           4-7 reserved
  1705.  0Ch    WORD    reserved
  1706.  0Eh    BYTE    save pointer function flags
  1707.         bit 0 512 character set supported
  1708.             1 dynamic save area supported
  1709.             2 alpha font override supported
  1710.             3 graphics font override supported
  1711.             4 palette override supported
  1712.             5 DCC extension supported
  1713.             6 reserved
  1714.             7 reserved
  1715.  0Fh    BYTE    reserved
  1716. ----------101C-------------------------------
  1717. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  1718.     AH = 1Ch
  1719.     AL = 00h return state buffer size
  1720.         Return: BX = number of 64-byte blocks needed
  1721.          01h save video state
  1722.         ES:BX -> buffer
  1723.          02h restore video state
  1724.         ES:BX -> buffer containing previously saved state
  1725.     CX = requested states
  1726.          bit 0 video hardware
  1727.          1 BIOS data areas
  1728.          2 color registers and DAC state
  1729.           3-15 reserved
  1730. Return: AL = 1Ch if function supported
  1731. ----------103000CX0000-----------------------
  1732. INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
  1733.     AX = 3000h
  1734.     CX = 0000h
  1735.     DX = 0000h
  1736. Return: CX:DX -> 3270PC configuration table (see below for format)
  1737.     CX:DX = 0000h:0000h if 3270PC Control Program not active
  1738.  
  1739. Format of 3270 PC configuration table:
  1740. Offset    Size    Description
  1741.  00h    BYTE    aspect ratio X
  1742.  01h    BYTE    aspect ratio Y
  1743.  02h    BYTE    monitor type
  1744.         00h = 5151 (mono) or 5272 (color)
  1745.         01h = 3295
  1746.         02h = 5151 or 5272 with XGA (???) graphics adapter
  1747.         03h = 5279 with 3270PC G adapter
  1748.         04h = 5379 model C01 with 3270PC GX adapter
  1749.         05h = 5379 model M01 with 3270PC GX adapter
  1750.         07h = non-3270PC with 3270 Workstation Program
  1751.         FFh = 3270PC Control Program not loaded
  1752.  03h    BYTE    reserved
  1753.  04h    BYTE    adapter ID
  1754.         00h = 5151/5272 adapter
  1755.         04h = 5151/5272 with XGA adapter
  1756.         30h = 3295 or 3270PC G/GX adapter
  1757.  05h    BYTE    reserved
  1758.  06h    BYTE    function flags 1
  1759.         bit 7: mono text, 1 page
  1760.             6: color text, 1 page
  1761.             5: color text, 4 pages
  1762.             4: CGA color graphics
  1763.             3: 720x350 two-color graphics
  1764.             2: 360x350 four-color graphics
  1765.             1: 720x350 eight-color graphics
  1766.  07h    BYTE    function flags 2
  1767.         bit 6: GPI graphics supported
  1768.  08h    WORD    segment address of Control Program Level table (see below)
  1769.  0Ah 10 BYTEs    reserved
  1770.  
  1771. Format of Control Program Level table:
  1772. Offset    Size    Description
  1773.  00h    WORD    program version
  1774.         02xxh = 3270PC Control Program v2.xx
  1775.         03xxh = 3270PC Control Program v3.xx
  1776.         04xxh = 3270 Workstation Program v1.xx
  1777.  02h    BYTE    Control Program ID (00h)
  1778.  03h 27 BYTEs    Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
  1779. ----------1040-------------------------------
  1780. INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
  1781.     AH = 40h
  1782. SeeAlso: AH=41h
  1783. ----------1041-------------------------------
  1784. INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
  1785.     AH = 41h
  1786. SeeAlso: AH=40h
  1787. ----------1042-------------------------------
  1788. INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
  1789.     AH = 42h
  1790. SeeAlso: AH=45h
  1791. ----------1043-------------------------------
  1792. INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
  1793.     AH = 43h
  1794.     AL = page number (0,1)
  1795. SeeAlso: AH=44h,AH=45h
  1796. ----------1044-------------------------------
  1797. INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
  1798.     AH = 44h
  1799.     AL = drawing function
  1800.         00h clear pixels
  1801.         01h set pixels
  1802.         02h invert pixels
  1803. SeeAlso: AH=44h,AH=46h,AH=4Ch,AH=4Dh
  1804. ----------1045-------------------------------
  1805. INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
  1806.     AH = 45h
  1807.     AL = page number (0,1)
  1808. SeeAlso: AH=42h,AH=43h
  1809. ----------1046-------------------------------
  1810. INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
  1811.     AH = 46h
  1812.     DI = x (0-720)
  1813.     BP = y (0-347)
  1814. Note:    function 44h determines operation and function 43h which page to use
  1815. SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
  1816. ----------1047-------------------------------
  1817. INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
  1818.     AH = 47h
  1819.     DI = x (0-720)
  1820.     BP = y (0-347)
  1821. Return: AL = 00h pixel clear
  1822.     AL = 01h pixel set
  1823. Note:    function 43h specifies which page is used
  1824. SeeAlso: AH=0Dh,AH=46h
  1825. ----------1048-------------------------------
  1826. INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
  1827.     AH = 48h
  1828.     DI = x (0-720)
  1829.     BP = y (0-347)
  1830. SeeAlso: AH=49h
  1831. ----------1049-------------------------------
  1832. INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
  1833.     AH = 49h
  1834.     DI = x (0-720)
  1835.     BP = y (0-347)
  1836. Note:    function 48h or 49h specify first point, 44h operation and 43h page to
  1837.       use
  1838. SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
  1839. ----------104A-------------------------------
  1840. INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
  1841.     AH = 4Ah
  1842.     DI = x coordinate of lower left corner
  1843.     BP = y coordinate of lower left corner
  1844.     BX = height in pixels
  1845.     CX = width in pixels
  1846. Note:    draws a solid rectangle
  1847. SeeAlso: AH=4Eh
  1848. ----------104B-------------------------------
  1849. INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
  1850.     AH = 4Bh
  1851.     AL = character to display
  1852.     DI = x (0-720)
  1853.     BP = y (0-347)
  1854. Note:    unlike the other BIOS character functions character position is
  1855.       specified in pixels rather than rows and columns
  1856. SeeAlso: AH=09h,AH=0Ah
  1857. ----------104B-------------------------------
  1858. INT 10 - FRIEZE v7+ - API
  1859.     AH = 4Bh
  1860.     CL = function
  1861.         00h reserved
  1862.         01h load window
  1863.         ES:BX -> ASCIZ filename from which to read
  1864.         02h save window
  1865.         ES:BX -> ASCIZ filename to which to write
  1866.         07h set window size
  1867.         ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
  1868.         09h set patterns
  1869.         ES:BX -> 16-BYTE vector of screen->printer color correspondnces
  1870.         0Ah get patterns
  1871.         ES:BX -> 16-BYTE buffer for color correspondences
  1872.         0Bh set mode
  1873.         AL = mode
  1874.         0Fh get window
  1875.         ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
  1876.         10h set print options
  1877.         ES:BX -> printer options in same format as FRIEZE cmdline
  1878.         14h get version
  1879.         Return: AH = major version (00h if FRIEZE version before 7)
  1880.             AL = minor version
  1881.         15h set parameters
  1882.         ES:BX -> parameter table (see below)
  1883.         16h get parameters
  1884.         ES:BX -> buffer for parameter table (see below)
  1885.         17h get printer resolution
  1886.         ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
  1887.         18h reserved (v8.0 only)
  1888. Return: AX = status
  1889.         00h successful
  1890.         01h user aborted printout with ESC
  1891.         02h reserved
  1892.         03h file read error
  1893.         04h file write error
  1894.         05h file not found
  1895.         06h invalid header (not an image or wrong screen mode)
  1896.         07h file close error
  1897.         08h disk error
  1898.         09h printer error
  1899.         0Ah invalid function
  1900.         0Bh can't create file
  1901.         0Ch wrong video mode
  1902.  
  1903. Format of parameter table:
  1904. Offset    Size    Description
  1905.  00h    WORD    top margin (1/100 inch)
  1906.  02h    WORD    left margin (1/100 inch)
  1907.  04h    WORD    horizontal size (1/100 inch)
  1908.  06h    WORD    vertical size (1/100 inch)
  1909.  08h    WORD    quality/draft mode
  1910.         00h draft mode
  1911.         01h quality mode
  1912.         02h use horizontal/vertical resolution for output resolution
  1913.  0Ah    WORD    printer horizontal resolution (dots per inch)
  1914.  0Ch    WORD    printer vertical resolution (dots per inch)
  1915.  0Eh    WORD    reserved (FFFFh)
  1916. Note:    any field which should remain unchanged may be filled with FFFFh
  1917. ----------104C-------------------------------
  1918. INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
  1919.     AH = 4Ch
  1920.     AL = quadrant (1 = upper right, 2 = upper left, etc)
  1921.     DI = x coordinate of center
  1922.     BP = y coordinate of center
  1923.     BX = radius
  1924. SeeAlso: AH=49h,AH=4Dh
  1925. ----------104D-------------------------------
  1926. INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
  1927.     AH = 4Dh
  1928.     DI = x of center
  1929.     BP = y of center
  1930.     BX = radius
  1931. SeeAlso: AH=49h,AH=4Ch
  1932. ----------104E-------------------------------
  1933. INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
  1934.     AH = 4Eh
  1935.     DI = x coordinate of an interior point
  1936.     BP = y coordinate of an interior point
  1937. Notes:    fills convex polygonal areas
  1938.     the first fill makes the figure solid, the second erases it
  1939. SeeAlso: AH=4Ah
  1940. ----------104F00-----------------------------
  1941. INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
  1942.     AX = 4F00h
  1943.     ES:DI -> 256-byte buffer for SuperVGA information (see below)
  1944. Return: AL = 4Fh function supported
  1945.     AH = status
  1946.         00h successful
  1947.         01h failed
  1948. SeeAlso: AX=4F01h
  1949.  
  1950. Format of SuperVGA information:
  1951. Offset    Size    Description
  1952.  00h  4 BYTEs    signature ('VESA')
  1953.  04h    WORD    VESA version number
  1954.  06h    DWORD    pointer to OEM name
  1955.  0Ah  4 BYTEs    capabilities
  1956.  0Eh    DWORD    pointer to list of supported VESA and OEM video modes
  1957.  12h 238 BYTEs    reserved
  1958. ----------104F01-----------------------------
  1959. INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
  1960.     AX = 4F01h
  1961.     CX = SuperVGA video mode
  1962.     ES:DI -> 256-byte buffer mode information (see below)
  1963. Return: AL = 4Fh function supported
  1964.     AH = status
  1965.         00h successful
  1966.         01h failed
  1967. SeeAlso: AX=4F00h,AX=4F02h
  1968.  
  1969. Format of mode information:
  1970. Offset    Size    Description
  1971.  00h    WORD    mode attributes
  1972.         bit 0: mode supported
  1973.         bit 1: optional information available
  1974.         bit 2: BIOS output supported
  1975.         bit 3: set if color, clear if monochrome
  1976.         bit 4: set if graphics mode, clear if text mode
  1977.  02h    BYTE    window A attributes
  1978.         bit 0: exists
  1979.         bit 1: readable
  1980.         bit 2: writable
  1981.         bits 3-7 reserved
  1982.  03h    BYTE    window B attributes (as for window A)
  1983.  04h    WORD    window granularity in K
  1984.  06h    WORD    window size in K
  1985.  08h    WORD    start segment of window A
  1986.  0Ah    WORD    start segment of window B
  1987.  0Ch    DWORD    -> FAR window positioning function (equivalent to AX=4F05h)
  1988.  10h    WORD    bytes per scan line
  1989. ---remainder is optional for VESA modes, needed for OEM modes---
  1990.  12h    WORD    width in pixels
  1991.  14h    WORD    height in pixels
  1992.  16h    BYTE    width of character cell in pixels
  1993.  17h    BYTE    height if character cell in pixels
  1994.  18h    BYTE    number of memory planes
  1995.  19h    BYTE    number of bits per pixel
  1996.  1Ah    BYTE    number of banks
  1997.  1Bh    BYTE    memory model type
  1998.  1Ch    BYTE    size of bank in K
  1999. ----------104F02-----------------------------
  2000. INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
  2001.     AX = 4F02h
  2002.     BX = mode
  2003.         bit 15 set means don't clear video memory
  2004. Return: AL = 4Fh function supported
  2005.     AH = status
  2006.         00h successful
  2007.         01h failed
  2008. SeeAlso: AX=4F01h,AX=4F03h
  2009.  
  2010. Values for VESA video mode:
  2011.  00h-FFh OEM video modes (see AH=00h)
  2012.  100h    640x400x256
  2013.  101h    640x480x256
  2014.  102h    800x600x16
  2015.  103h    800x600x256
  2016.  104h    1024x768x16
  2017.  105h    1024x768x256
  2018.  106h    1280x1024x16
  2019.  107h    1280x1024x256
  2020.  108h    80x60 text
  2021.  109h    132x25 text
  2022.  10Ah    132x43 text
  2023.  10Bh    132x50 text
  2024.  10Ch    132x60 text
  2025. ----------104F03-----------------------------
  2026. INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
  2027.     AX = 4F03h
  2028. Return: AL = 4Fh function supported
  2029.     AH = status
  2030.         00h successful
  2031.         01h failed
  2032.     BX = video mode (see AX=4F02h)
  2033. SeeAlso: AX=4F02h
  2034. ----------104F04-----------------------------
  2035. INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
  2036.     AX = 4F04h
  2037.     DL = subfunction
  2038.         00h get state buffer size
  2039.         Return: BX = number of 64-byte blocks needed
  2040.         01h save video states
  2041.         ES:BX -> buffer
  2042.         02h restore video states
  2043.         ES:BX -> buffer
  2044.     CX = flags for states to save/restore
  2045.         bit 0: video hardware state
  2046.         bit 1: video BIOS data state
  2047.         bit 2: video DAC state
  2048.         bit 3: SuperVGA state
  2049. Return: AL = 4Fh function supported
  2050.     AH = status
  2051.         00h successful
  2052.         01h failed
  2053. ----------104F05-----------------------------
  2054. INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
  2055.     AX = 4F05h
  2056.     BH = subfunction
  2057.         00h select video memory window
  2058.         DX = window address in video memory (in granularity units)
  2059.         01h get video memory window
  2060.         Return: DX = window address in video memory (in gran. units)
  2061.     BL = window number
  2062.         00h window A
  2063.         01h window B
  2064. Return: AL = 4Fh function supported
  2065.     AH = status
  2066.         00h successful
  2067.         01h failed
  2068. SeeAlso: AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
  2069. ----------104F06-----------------------------
  2070. INT 10 - VESA SuperVGA BIOS 1.1 - GET/SET LOGICAL SCAN LINE LENGTH
  2071.     AX = 4F06h
  2072.     BL = function
  2073.         00h set scan line length
  2074.         CX = desired width in pixels
  2075.         01h get scan line length
  2076. Return: AL = 4Fh if function supported
  2077.     AH = status
  2078.         00h successful
  2079.         01h failed
  2080.     BX = bytes per scan line
  2081.     CX = number of pixels per scan line
  2082.     DX = maximum number of scan lines
  2083. Notes:    if the desired width is not achievable, the next larger width will be
  2084.       set
  2085.     the scan line may be wider than the visible area of the screen
  2086.     this function is valid in text modes, provided that values are
  2087.       multiplied by the character cell width/height
  2088. SeeAlso: AX=4F01h,AX=4F05h,AX=4F07h
  2089. ----------104F07BH00-------------------------
  2090. INT 10 - VESA SuperVGA BIOS 1.1 - GET/SET DISPLAY START
  2091.     AX = 4F07h
  2092.     BH = 00h (reserved)
  2093.     BL = 00h set display start
  2094.         CX = leftmost displayed pixel in scan line
  2095.         DX = first displayed scan line
  2096.        = 01h get display start
  2097.         Return: BH = 00h
  2098.             CX = leftmost displayed pixel in scan line
  2099.             DX = first displayed scan line
  2100. Return: AL = 4Fh if function supported
  2101.     AH = status
  2102.         00h successful
  2103.         01h failed
  2104. Note:    this function is valid in text modes, provided that values are
  2105.       multiplied by the character cell width/height
  2106. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
  2107. ----------1050-------------------------------
  2108. INT 10 - SCROLOCK.COM - INSTALLATION CHECK
  2109.     AH = 50h
  2110. Return: BX = 1954h if installed
  2111.         AL = 00 if inactive, nonzero if active
  2112. Note:    SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  2113. SeeAlso: AH=51h
  2114. ----------1051-------------------------------
  2115. INT 10 - SCROLOCK.COM - ENABLE/DISABLE
  2116.     AH = 51h
  2117.     AL = state
  2118.         00h disable
  2119.         nonzero enable
  2120. Note:    SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  2121. SeeAlso: AH=50h
  2122. ----------105555-----------------------------
  2123. INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
  2124.     AX = 5555h
  2125. Return: AX = AAAAh    if installed
  2126.     BX:CX -> ??? routine in SMS.COM resident portion
  2127.           -> data area in VCONFIG
  2128. Note:    Super Switch (SMS.COM) is a video mode switch program supplied with
  2129.       ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
  2130. SeeAlso: INT 10/AH=00h
  2131.  
  2132. Format of data area:
  2133. Offset    Size    Description
  2134.  00h    DWORD    original INT 09 vector
  2135.  04h    DWORD    original INT 10 vector
  2136.  08h    DWORD    original INT 1C vector
  2137.  0Ch    WORD    screen saver state, 0=off, 1=on
  2138.  0Eh    WORD    blanking interval in clock ticks
  2139. ----------106A00BX0000-----------------------
  2140. INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
  2141.     AX = 6A00h
  2142.     BX = 0000h
  2143.     CX = 0000h
  2144.     DX = buffer length (may be 0)
  2145.     ES:DI -> buffer
  2146. Return: BX = number of bytes stored in buffer
  2147.     CX = bytes required for all descriptions (0 if no DGIS)
  2148. Note:    buffer contains descriptions and addresses of DGIS-compatible
  2149.       display(s) and printer(s)
  2150. SeeAlso: AX=6A02h
  2151. ----------106A01CX0000-----------------------
  2152. INT 10 - DGIS - REDIRECT CHARACTER OUTPUT
  2153.     AX = 6A01h
  2154.     CX = 0000h
  2155.     ES:DI = address of device to send INT 10 output to
  2156. Return: CX = 0000h  output could not be redirected
  2157.          else INT 10h output now routed to requested display
  2158. SeeAlso: AX=6A02h
  2159. ----------106A02-----------------------------
  2160. INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
  2161.     AX = 6A02h
  2162.     ES:DI = 0000h:0000h
  2163. Return: ES:DI = 0000h:0000h  if current display is non-DGIS
  2164.         else address of the current DGIS INT 10 display
  2165. SeeAlso: AX=6A00h,AX=6A01h
  2166. ----------106F00-----------------------------
  2167. INT 10 - VIDEO - INSTALLATION CHECK (Video7 VGA,VEGA VGA)
  2168.     AX = 6F00h
  2169. Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
  2170. ----------106F01-----------------------------
  2171. INT 10 - VIDEO - GET MONITOR INFO (Video7 VGA,VEGA VGA)
  2172.     AX = 6F01h
  2173. Return: AL = monitor type code (VEGA VGA only)
  2174.     AH = status register information
  2175.          bit  0 = display enable
  2176.             0 = display enabled
  2177.             1 = vertical or horizontal retrace in progress
  2178.          bit  1 = light pen flip flop set
  2179.          bit  2 = light pen switch activated
  2180.          bit  3 = vertical sync
  2181.          bit  4 = monitor resolution
  2182.             0 = high resolution (>200 lines)
  2183.             1 = low resolution (<=200 lines)
  2184.          bit  5 = display type
  2185.             0 = color
  2186.             1 = monochrome
  2187.          bits6,7= diagnostic bits
  2188. Note:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  2189. ----------106F04-----------------------------
  2190. INT 10 - VIDEO - GET MODE AND SCREEN RESOLUTION (Video7 VGA, VEGA VGA)
  2191.     AX = 6F04h
  2192. Return: AL = current video mode (see AX=6F05h)
  2193.     BX = horizontal columns (text) or pixels (graphics)
  2194.     CX = vertical columns (text) or pixels (graphics)
  2195. SeeAlso: AX=6F05h
  2196. ----------106F05-----------------------------
  2197. INT 10 - VIDEO - SET VIDEO MODE (Video7 VGA, VEGA EXTENDED EGA/VGA)
  2198.     AX = 6F05h
  2199.     BL = mode (see below)
  2200. SeeAlso: AH=00h,AX=0070h
  2201.  
  2202. Values for video mode:
  2203.       text/ text pixel     pixel    colors    disp    scrn  system
  2204.       grph resol  box    resoltn        page    addr
  2205.  00h-13h = standard IBM modes (see AH=00h)
  2206.  40h = T   80x43  8x8                     Video7/VEGA VGA
  2207.  41h = T  132x25  8x14                     Video7/VEGA VGA
  2208.  42h = T  132x43  8x8                     Video7/VEGA VGA
  2209.  43h = T   80x60  8x8                     Video7/VEGA VGA
  2210.  44h = T  100x60  8x8                     Video7/VEGA VGA
  2211.  45h = T  132x28  8x8                     Video7/VEGA VGA
  2212.  60h = G        752x410      16             Video7 VGA, VEGA VGA
  2213.  61h = G        720x540      16             Video7 VGA, VEGA VGA
  2214.      = G        720x540      16             Northgate
  2215.  62h = G        800x600      16             Video7 VGA, VEGA Ext EGA
  2216.  63h = G           1024x768       2             Video7 VGA
  2217.  64h = G           1024x768       4             Video7 VGA
  2218.  65h = G           1024x768      16             Video7 VGA, VEGA Ext EGA
  2219.  66h = G        640x400     256             Video7 VGA, VEGA Ext VGA
  2220.      = G        640x400     256             Northgate
  2221.  67h = G        640x480     256             Video7 VGA, VEGA Ext VGA
  2222.  68h = G        720x540     256             Video7 VGA, VEGA Ext VGA
  2223.  69h = G        800x600     256             Video7 VGA, VEGA Ext VGA
  2224.  70h = G        752x410      16gray         Video7 VGA, VEGA VGA
  2225.  71h = G        720x540      16gray         Video7 VGA, VEGA VGA
  2226.  72h = G        800x600      16gray         Video7 VGA
  2227.  73h = G           1024x768       2gray         Video7 VGA
  2228.  74h = G           1024x768       4gray         Video7 VGA
  2229.  75h = G           1024x768      16gray         Video7 VGA
  2230.  76h = G        640x400     256gray         Video7 VGA
  2231.  77h = G        640x480     256gray         Video7 VGA
  2232.  78h = G        720x540     256gray         Video7 VGA
  2233.  79h = G        800x600     256gray         (future)
  2234. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  2235. ----------106F06-----------------------------
  2236. INT 10 - VIDEO - SELECT AUTOSWITCH MODE (V7VGA,VEGA VGA)
  2237.     AX = 6F06h
  2238.     BL = Autoswitch mode select
  2239.          00h select EGA/VGA-only modes
  2240.          01h select Autoswitched VGA/EGA/CGA/MGA modes
  2241.          02h select 'bootup' CGA/MGA modes
  2242.     BH = enable/disable (00h enable, 01h = disable selection)
  2243. ----------106F07-----------------------------
  2244. INT 10 - VIDEO - GET VIDEO MEMORY CONFIGURATION (V7VGA,VEGA VGA)
  2245.     AX = 6F07h
  2246. Return: AL = 6Fh
  2247.     AH = bits 0-6 = number of 256K blocks of video memory
  2248.          bit 7    = DRAM/VRAM (0: DRAM, 1: VRAM)
  2249.     BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
  2250.     BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
  2251.     CX = 0000h
  2252. SeeAlso: AH=12h/BL=10h
  2253. ----------1070-------------------------------
  2254. INT 10 - VIDEO - GET VIDEO RAM ADDRESS (TANDY 1000)
  2255.     AH = 70h
  2256. Return: AX = segment address of the following
  2257.     [BX] = offset address of green plane
  2258.     [CX] = segment address of green plane
  2259.     [DX] = segment address of red/blue plane
  2260.            (red offset = 0, blue offset = 4000)
  2261. SeeAlso: AH=71h
  2262. ----------107000BX0000-----------------------
  2263. INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
  2264.     AX = 7000h
  2265.     BX = 0000h
  2266. Return: CL = monitor type
  2267.         00h mono
  2268.         01h CGA
  2269.         02h EGA
  2270.         03h digital multifrequency
  2271.         04h IBM PS/2
  2272.         05h IBM 8514
  2273.         06h SuperVGA
  2274.         07h analog multifrequency
  2275.         08h super multifrequency
  2276.     CH = feature bits
  2277.         bits 7,6: 00 = 256K memory
  2278.               01 = 512K memory
  2279.               10 = 1024K
  2280.               11 = 2048K memory
  2281.         bit 5:    special oscillator present
  2282.         bit 4:    VGA protect enabled
  2283.         bit 0:    6845 emulation
  2284.     DX = video board info
  2285.         bits 4-15: board ID model
  2286.         bits 0-3:  board ID revision
  2287.     DI = BCD BIOS version number
  2288. ----------107000BX0004-----------------------
  2289. INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
  2290.     AX = 7000h
  2291.     BX = 0004h
  2292. Return: ES:DI -> FAR paging function (call with DL = page to set)
  2293. Note:    the word preceding ES:DI is the length of the function in bytes, and
  2294.       the last byte of the function is a FAR return instruction.
  2295. SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
  2296. ----------107000BX0005-----------------------
  2297. INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
  2298.     AX = 7000h
  2299.     BX = 0005h
  2300.     CL = maximum number of modes to get info for
  2301.     CH = mode type to get info for (see below)
  2302.     DL = monitor type to get info for
  2303.     ES:DI -> buffer for mode info (see below)
  2304. Return: CL = total number of modes fitting criteria
  2305.     CH = size of each info record
  2306. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
  2307.  
  2308. Values for mode type:
  2309.  00h all modes
  2310.  01h monochrome text modes
  2311.  02h color text modes
  2312.  03h four-color CGA graphics modes
  2313.  04h two-color CGA graphics modes
  2314.  05h 16-color graphics modes
  2315.  06h 256-color graphics modes
  2316.  
  2317. Format of mode information record:
  2318. Offset    Size    Description
  2319.  00h    BYTE    mode number (bit 7 set if extended mode)
  2320.  01h    BYTE    mode type (see above)
  2321.  02h    BYTE    info bits
  2322.         bits 7,6 reserved
  2323.              5     monochrome mode
  2324.              4     interlaced display
  2325.              3     requires special oscillator
  2326.              2,1 memory required
  2327.              00 = 256K
  2328.              01 = 512K
  2329.              10 = 1024K
  2330.              11 = 2048K
  2331.              0     reserved
  2332.  03h    BYTE    font height
  2333.  04h    BYTE    text columns on screen
  2334.  05h    BYTE    text rows on screen
  2335.  06h    WORD    number of scan lines
  2336.  08h    BYTE    color information
  2337.         bits 7-4 reserved
  2338.              3-0 bits per pixel
  2339. ----------1071-------------------------------
  2340. INT 10 - VIDEO - GET INCRAM ADDRESSES (TANDY 1000)
  2341.     AH = 71h
  2342. Return: AX  = segment address of the following
  2343.     [BX] = segment address of INCRAM
  2344.     [CX] = offset address of INCRAM
  2345. SeeAlso: AH=70h
  2346. ----------1072-------------------------------
  2347. INT 10 - VIDEO - SCROLL SCREEN RIGHT (TANDY 1000)
  2348.     AH = 72h
  2349.     AL = number of columns blanked at left of window
  2350.          00h = blank entire window
  2351.     BH = attributes to be used on blank columns
  2352.     CH,CL = row, column of upper left corner of window
  2353.     DH,DL = row, column of lower right corner
  2354. SeeAlso: AH=06h,AH=07h,AH=73h
  2355. ----------1073------------------------------
  2356. INT 10 - VIDEO - SCROLL SCREEN LEFT (TANDY 1000)
  2357.     AH = 73h
  2358.     AL = number of columns blanked at right of window
  2359.          00h = blank entire window
  2360.     BH = attributes to be used on blank columns
  2361.     CH,CL = row, column of upper left corner of window
  2362.     DH,DL = row, column of lower right corner
  2363. SeeAlso: AH=06h,AH=07h,AH=72h
  2364. ----------1080--DX4456-----------------------
  2365. INT 10 - VIDEO (DESQview 2.0x only) - internal - SET ??? HANDLER
  2366.     AH = 80h
  2367.     DX = 4456h ('DV')
  2368.     ES:DI -> FAR subroutine to be called on ???
  2369. Return: DS = segment of DESQview data structure for video buffer
  2370. Note:    this function is probably meant for internal use only, due to the magic
  2371.       value required in DX
  2372.     the subroutine seems to be called when the DESQview menu is accessed;
  2373.       on entry, AL = 03h or 04h
  2374. ----------1081--DX4456-----------------------
  2375. INT 10 - VIDEO (DESQview 2.0x only) - internal - GET ???
  2376.     AH = 81h
  2377.     DX = 4456h ('DV')
  2378. Return: ES = segment of DESQview data structure for video buffer
  2379.         BYTE ES:[0] = current window number in DV 2.0x
  2380. Note:    this function is probably meant for internal use only, due to the magic
  2381.       value required in DX
  2382. SeeAlso: AH=82h
  2383. ----------1082--DX4456-----------------------
  2384. INT 10 - VIDEO (DESQview 2.0x only) - internal - GET CURRENT WINDOW INFO
  2385.     AH = 82h
  2386.     DX = 4456h ('DV')
  2387. Return: DS = segment in DESQview for data structure
  2388.          in DV 2.00,
  2389.           BYTE DS:[0] = window number
  2390.           WORD DS:[1] = segment of other data structure
  2391.           WORD DS:[3] = segment of window's object handle
  2392.     ES = segment of DESQview data structure for video buffer
  2393.     AL = current window number
  2394.     AH = ???
  2395.     BL = direct screen writes
  2396.         00h program does not do direct writes
  2397.         01h program does direct writes, so shadow buffer not usable
  2398.     BH = ???
  2399.     CL = current video mode
  2400.     CH = ???
  2401. Note:    this function is probably meant for internal use only, due to the magic
  2402.       value required in DX
  2403. SeeAlso: AH=81h
  2404. ----------108B-------------------------------
  2405. INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
  2406.     AH = 8Bh
  2407. SeeAlso: AH=92h,AH=93h
  2408. ----------1090-------------------------------
  2409. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
  2410.     AH = 90h
  2411. Return: AL = current video mode (see AH=00h)
  2412. SeeAlso: AH=91h
  2413. ----------1091-------------------------------
  2414. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
  2415.     AH = 91h
  2416. Return: AL = video adapter type
  2417.         00h monochrome
  2418.         01h Hercules monochrome graphics
  2419.         02h CGA
  2420.         03h EGA
  2421.         04h VGA
  2422.         80h monochrome text terminal
  2423.         81h Hercules graphics terminal
  2424.         82h color graphics terminal
  2425. Note:    types less than 80h do not imply that the current user is on the host
  2426. SeeAlso: AH=90h
  2427. ----------1092-------------------------------
  2428. INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
  2429.     AH = 92h
  2430. Note:    the terminal will be updated even when screen updates are inhibited if
  2431.       TTY output is used
  2432. SeeAlso: AH=8Bh
  2433. ----------1093-------------------------------
  2434. INT 10 - Alloy MW386 - REDRAW SCREEN
  2435.     AH = 93h
  2436. SeeAlso: AH=8Bh
  2437. ----------10BF00-----------------------------
  2438. INT 10 - VIDEO - Compaq Portable Extensions - SELECT EXTERNAL MONITOR
  2439.     AX = BF00h
  2440. Note:    all registers preserved and the internal monitor is blanked
  2441.     the external monitor becomes the active monitor
  2442. SeeAlso: AX=BF01h
  2443. ----------10BF01-----------------------------
  2444. INT 10 - VIDEO - Compaq Portable Extensions - SELECT INTERNAL MONITOR
  2445.     AX = BF01h
  2446. Note:    all registers preserved and the external monitor is blanked
  2447.     the internal monitor becomes the active monitor
  2448. SeeAlso: AX=BF00h
  2449. ----------10BF02-----------------------------
  2450. INT 10 - VIDEO - Compaq Portable Extensions - SET MASTER MODE OF CURRENT CTRLR
  2451.     AX = BF02h
  2452.     BH = master mode
  2453.         04h CGA
  2454.         05h EGA
  2455.         07h MDA
  2456. SeeAlso: AX=BF03h
  2457. ----------10BF03BX0000-----------------------
  2458. INT 10 - VIDEO - Compaq Portable/Systempro Extensions - GET ENVIRONMENT
  2459.     AX = BF03h
  2460.     BX = 0000h
  2461. Return: BH = active monitor
  2462.         00h = external
  2463.         01h = internal
  2464.     BL = master mode
  2465.         00h = switchable VDU not present
  2466.         04h = CGA
  2467.         05h = EGA
  2468.         07h = MDA
  2469.         08h = switchable LCD controller present
  2470.     CH = 00h (reserved)
  2471.     CL = switchable VDU mode supported
  2472.         bit     0   = CGA supported
  2473.         bits 1,2 = reserved (1)
  2474.         bit     3   = MDA supported
  2475.         bits 4-7 = reserved (1)
  2476.     DH = internal monitor type
  2477.         00h = none
  2478.         01h = Dual-mode monitor
  2479.         02h = 5153 RGB monitor
  2480.         03h = Compaq Color monitor
  2481.         04h = 640x400 flat panel
  2482.         07h = LCD VGA
  2483.     DL = external monitor type
  2484.         00h = none
  2485.         01h = dual-mode monitor
  2486.         02h = 5153 RGB monitor
  2487.         03h = Compaq Color monitor
  2488.         04h = 640x400 flat panel
  2489.         05h = VGC monochrome
  2490.         06h = VGC color
  2491. SeeAlso: AH=1Ah,AX=BF00h,AX=BF01h,AX=BF02h
  2492. ----------10BF04-----------------------------
  2493. INT 10 - VIDEO - Compaq Portable Extensions - SET MODE SWITCH DELAY
  2494.     AX = BF04h
  2495.     BH = new state of delay
  2496.         00h enabled
  2497.         01h disabled
  2498. SeeAlso: AX=BF05h
  2499. ----------10BF05-----------------------------
  2500. INT 10 - VIDEO - Compaq Systempro Extensions - ENABLE/DISABLE DISPLAY
  2501.     AX = BF05h
  2502.     BH = new state of video
  2503.         00h off
  2504.         01h on
  2505. SeeAlso: AX=BF04h
  2506. ----------10BF06-----------------------------
  2507. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  2508.     AX = BF06h
  2509.     CL = address to be read from gray scale table
  2510. Return: AL = bit 3-0 - Value read from gray scale table
  2511.     CL = address to be read from gray scale table
  2512. SeeAlso: AH=12h/BL=33h,AX=BF07h
  2513. ----------10BF07-----------------------------
  2514. INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
  2515.     AX = BF07h
  2516.     CH = value to write to gray scale table
  2517.     CL = address to be written to gray scale table
  2518. SeeAlso: AX=BF06h
  2519. ----------10BF08-----------------------------
  2520. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  2521.     AX = BF08h
  2522.     CH = bits 7-4 - Green weight
  2523.          bits 3-0 - Blue weight
  2524.     CL = bits 7-4 - unused
  2525.          bits 3-0 - Red weight
  2526. ----------10CC00SI0000-----------------------
  2527. INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
  2528.     AX = CC00h
  2529.     SI = 0000h (if checking version)
  2530. Return: CX = ABCDh
  2531.     AL = Ultravision extensions
  2532.         00h enabled
  2533.         FFh disabled
  2534.     AH = card designator
  2535.     BX:00F0h -> palette values (for compatibility with NEWFONT)
  2536.     DX = support for high resolution modes
  2537.         00h not active
  2538.         01h active
  2539.     SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
  2540.        = unchanged for versions <1.2
  2541. SeeAlso: AX=CC01h,AX=CC02h
  2542. ----------10CC01-----------------------------
  2543. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  2544.     AX = CC01h
  2545. Notes:    subsequent BIOS calls will be passed through to previous handler
  2546.     should be followed immediately by mode set to restore normal EGA/VGA
  2547.       state
  2548. SeeAlso: AX=CC02h
  2549. ----------10CC02-----------------------------
  2550. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  2551.     AX = CC02h
  2552. Note:    should be followed immediately by mode set to restore previous
  2553.       UltraVision state
  2554. SeeAlso: AX=CC01h
  2555. ----------10CD00-----------------------------
  2556. INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
  2557.     AX = CD00h
  2558.     CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
  2559.     DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
  2560. Notes:    if palette locking is in effect for the current mode, the new colors
  2561.       will be displayed immediately; otherwise, the system reverts to the
  2562.       default palette
  2563.     palette table 0 is reserved for the default palette and cannot be set
  2564.     UltraVision always sets the border color to black
  2565. SeeAlso: AX=CD01h,AX=CD02h
  2566. ----------10CD01-----------------------------
  2567. INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
  2568.     AX = CD01h
  2569.     CL = palette locking value
  2570.         00h none
  2571.         01h text modes only (02h,03h)
  2572.         FFh all modes (all standard color text and graphics modes)
  2573. Notes:    intended for video modes with 16 or fewer colors
  2574. SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
  2575. ----------10CD02-----------------------------
  2576. INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
  2577.     AX = CD02h
  2578. Return: CL = palette table number
  2579.     DS:DX -> 17-byte palette register list
  2580.     DS:SI -> current font names table (see below)
  2581. Note:    only the font names are valid on monochrome EGA systems
  2582. SeeAlso: AX=1009h,AX=CD00h
  2583.  
  2584. Format of palette register list:
  2585. Offset    Size    Description
  2586.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  2587.  10h    BYTE    border color
  2588.  
  2589. Format of current font names table (v2+):
  2590. Offset    Size    standard EGA    HiRes EGA    VGA
  2591.  00h  8 BYTEs    N/A        F19 font    F20 font
  2592.  08h  8 BYTEs    F14 font    F14 font    F14 font
  2593.  10h  8 BYTEs    N/A        F11 font    F10 font
  2594.  18h  8 BYTEs    F8 font        F8 font        F8 font
  2595.  
  2596. Format of current font names table (v1.x):
  2597. Offset    Size    HiRes EGA
  2598.  00h  8 BYTEs    F19/F14 font
  2599.  08h  8 BYTEs    F11/F8 font
  2600. ----------10CD03-----------------------------
  2601. INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
  2602.     AX = CD03h
  2603. Return: CL = palette locking value
  2604.         00h none
  2605.         01h text modes only
  2606.         FFh all modes
  2607. SeeAlso: AX=CD01h
  2608. ----------10CD04-----------------------------
  2609. INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
  2610.     AX = CD04h
  2611. Return: AL = mode number
  2612.         11h 80x25
  2613.         12h 80x43, 80x50
  2614.         13h 80x34, 80x36
  2615.         14h 80x60, 80x63
  2616.         19h 94x25
  2617.         1Ah 94x43, 94x50
  2618.         1Bh 94x36
  2619.         1Ch 94x63
  2620.         21h 108x25
  2621.         22h 108x43, 108x50
  2622.         23h 107x34, 108x36
  2623.         24h 108x60, 108x63
  2624.         31h 120x25
  2625.         32h 120x43, 120x50
  2626.         33h 132x25
  2627.         34h 132x44, 132x50
  2628.         39h 120x36
  2629.         3Ah 120x63
  2630.         3Bh 132x36
  2631.         3Ch 132x60
  2632. SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
  2633. ----------10CD05-----------------------------
  2634. INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
  2635.     AX = CD05h
  2636.     CL = type
  2637.         00h line cursor
  2638.         FFh box cursor
  2639. Note:    sets default cursor type for text-based programs
  2640. SeeAlso: AH=01h,AX=CD06h
  2641. ----------10CD06-----------------------------
  2642. INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
  2643.     AX = CD06h
  2644. Return:    CL = type
  2645.         00h line cursor
  2646.         FFh box cursor
  2647. SeeAlso: AH=03h,AX=CD05h
  2648. ----------10CD07-----------------------------
  2649. INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
  2650.     AX = CD07h
  2651.     CL = hardware underline status
  2652.         00h off (color systems only)
  2653.         01h underline below characters
  2654.         02h strike through characters
  2655.     BL = foreground color for normal text (FFh = current)
  2656.     BH = foreground color for bright text (FFh = current)
  2657. Return: CL = hardware underline status
  2658.     BL = current foreground color for normal text
  2659.     BH = current foreground color for bright text
  2660. Notes:    when underline or strikeout is enabled in color text modes, the
  2661.       specified colors will be assigned temporarily to colors 01h and 09h,
  2662.       allowing affected text to match non-underlined text.  The color
  2663.       remapping uses values from the current onscreen palette regardless
  2664.       of the palette locking status (see AX=CD01h)
  2665.     specify the standard colors (BL=01h,BH=09h) to enable underline or
  2666.       strikeout without color remapping
  2667. SeeAlso: AX=CD08h
  2668. ----------10CD08-----------------------------
  2669. INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
  2670.     AX = CD08h
  2671. Return: CL = hardware underline status (see AX=CD07h)
  2672.     BL = foreground color for normal text
  2673.     BH = foreground color for bright text
  2674. Note:    only CL is valid on monochrome EGA systems
  2675. SeeAlso: AX=CD07h
  2676. ----------10CD10-----------------------------
  2677. INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
  2678.     AX = CD10h
  2679.     BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
  2680.     CX = ABCDh load 9xN alternate font (v2+)
  2681.        else number of characters to load
  2682.         DX = character offset into font table
  2683.         DS:SI -> 8-byte ASCII font name
  2684.     ES:BP -> font definitions
  2685. Return: AX = FFFFh if invalid font parameters
  2686. Notes:    loads the designated characters into UltraVision's resident font area
  2687.     should be followed by a video mode set to reload character generator
  2688. SeeAlso: AX=1100h
  2689. ----------10CD-------------------------------
  2690. INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
  2691.     AH = CDh
  2692.     AL = text mode number (see AX=CD04h)
  2693. Return: AX = CDCDh if invalid mode
  2694. SeeAlso: AX=CD04h
  2695. ----------10EF-------------------------------
  2696. INT 10 - VIDEO - MSHERC.COM - INSTALLATION CHECK???
  2697.     AH = EFh
  2698. Return: DL = video adapter type
  2699.         00h original Hercules
  2700.         01h ???  \ one is probably Hercules Plus, the other
  2701.         02h ???  / Hercules InColor
  2702.         FFh non-Hercules 
  2703.     DH = memory mode byte
  2704.         01h "half" mode
  2705.         03h "full" mode
  2706. Note:    MSHERC.COM is a support program for the Microsoft Quick languages which
  2707.       makes their graphics libraries compatible with a Hercules card by
  2708.       adding video modes 08h and 88h, and supporting text in the new
  2709.       graphics modes.  While in mode 08h or 88h, INT 10 supports the
  2710.       Hercules card much like a CGA.
  2711. ----------10F0-------------------------------
  2712. INT 10 - EGA Register Interface Library - READ ONE REGISTER
  2713.     AH = F0h
  2714.     BL = register number
  2715.     BH = 00h
  2716.     DX = group index
  2717.         Pointer/data chips
  2718.            00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  2719.            08h Sequencer (5 registers) 3C4h
  2720.            10h Graphics Controller (9 registers) 3CEh
  2721.            18h Attribute Controller (20 registers) 3C0h
  2722.         Single registers
  2723.            20h Miscellaneous Output register 3C2h
  2724.            28h Feature Control register (3BAh mono modes, 3DAh color modes)
  2725.            30h Graphics 1 Position register 3CCh
  2726.            38h Graphics 2 Position register 3CAh
  2727. Return: BL = data
  2728. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  2729.       others
  2730. SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
  2731. ----------10F1-------------------------------
  2732. INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
  2733.     AH = F1h
  2734.     DX = group index (see AH=F0h)
  2735.         if single register:
  2736.         BL = value to write
  2737.         otherwise
  2738.         BL = register number
  2739.         BH = value to write
  2740. Return: BL = data
  2741. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  2742.       others
  2743. SeeAlso: AH=F0h,AH=F3h
  2744. ----------10F2-------------------------------
  2745. INT 10 - EGA Register Interface Library - READ REGISTER RANGE
  2746.     AH = F2h
  2747.     CH = starting register number
  2748.     CL = Number of registers (>1)
  2749.     DX = group index
  2750.          00h CRTC (3B4h mono modes, 3D4h color modes)
  2751.          08h Sequencer 3C4h
  2752.          10h Graphics Controller 3CEh
  2753.          18h Attribute Controller 3C0h
  2754.     ES:BX -> buffer, CL bytes
  2755. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  2756.       others
  2757. SeeAlso: AH=F0h,AH=F3h
  2758. ----------10F3-------------------------------
  2759. INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
  2760.     AH = F3h
  2761.     CH = starting register
  2762.     CL = number of registers (>1)
  2763.     DX = group index (see AH=F2h)
  2764.     ES:BX -> buffer, CL bytes
  2765. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  2766.       others
  2767. SeeAlso: AH=F1h,AH=F2h
  2768. ----------10F4-------------------------------
  2769. INT 10 - EGA Register Interface Library - READ REGISTER SET
  2770.     AH = F4h
  2771.     CX = number of registers to read (>1)
  2772.     ES:BX -> table of records (see below)
  2773. Return: register values in table filled in
  2774. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  2775.       others
  2776. SeeAlso: AH=F0h,AH=F2h,AH=F5h
  2777.  
  2778. Format of entries in table of register records:
  2779. Offset    Size    Description
  2780.  00h    WORD    group index
  2781.         Pointer/data chips
  2782.            00h CRTC (3B4h mono modes, 3D4h color modes)
  2783.            08h Sequencer 3C4h
  2784.            10h Graphics Controller 3CEh
  2785.            18h Attribute Controller 3C0h
  2786.         Single registers
  2787.            20h Miscellaneous Output register 3C2h
  2788.            28h Feature Control register (3BAh mono modes, 3DAh color)
  2789.            30h Graphics 1 Position register 3CCh
  2790.            38h Graphics 2 Position register 3CAh
  2791.  02h    BYTE    register number (0 for single registers)
  2792.  03h    BYTE    register value
  2793. ----------10F5-------------------------------
  2794. INT 10 - EGA Register Interface Library - WRITE REGISTER SET
  2795.     AH = F5h
  2796.     CX = number of registers to write (>1)
  2797.     ES:BX -> table of records (see AH=F4h)
  2798. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  2799.       others
  2800. SeeAlso: AH=F1h,AH=F3h,AH=F4h
  2801. ----------10F6------------------------------
  2802. INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
  2803.     AH = F6h
  2804. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  2805.       others
  2806. SeeAlso: AH=F7h
  2807. ----------10F7------------------------------
  2808. INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
  2809.     AH = F7h
  2810.     DX = port number
  2811.        Pointer/data chips
  2812.           00h CRTC (3B4h mono modes, 3D4h color modes)
  2813.           08h Sequencer 3C4h
  2814.           10h Graphics Controller 3CEh
  2815.           18h Attribute Controller 3C0h
  2816.        Single registers
  2817.           20h Miscellaneous Output register 3C2h
  2818.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  2819.           30h Graphics 1 Position register 3CCh
  2820.           38h Graphics 2 Position register 3CAh
  2821.     ES:BX -> table of one-byte entries, one byte to be written to each
  2822.          register
  2823. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  2824.       others
  2825. SeeAlso: AH=F6h
  2826. ----------10FA--BX0000----------------------
  2827. INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
  2828.     AH = FAh
  2829.     BX = 0000h
  2830. Return: BX = 0000h if mouse driver not present
  2831.     ES:BX -> EGA Register Interface version number, if present:
  2832.         byte 0 = major release number
  2833.         byte 1 = minor release number
  2834. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  2835.       others
  2836. SeeAlso: AH=F6h,INT 2F/AX=BC00h
  2837. ----------10FA------------------------------
  2838. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  2839.     AH = FAh
  2840. Return: AX = 00FAh if installed
  2841.         ES = segment of resident code
  2842. Note:    FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  2843.       Steiner
  2844. ----------10FE------------------------------
  2845. INT 10 - TopView - GET SHADOW BUFFER
  2846.     AH = FEh
  2847.     ES:DI -> assumed video buffer (B800h:0000h color, B000h:0000h mono)
  2848. Return: ES:DI -> actual video buffer for calling process
  2849. Notes:    if no multitasker is installed, ES:DI is returned unchanged
  2850.     TopView requires a call to AH=FFh to notify it that the screen has
  2851.       changed; DESQview will check for changes itself until the first call
  2852.       to AH=FFh
  2853. SeeAlso: AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  2854. ----------10FF-------------------------------
  2855. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  2856.     AH = FFh
  2857.     CX = number of consecutive changed characters
  2858.     ES:DI -> first changed character in shadow buffer
  2859. Notes:    avoid CX=0000h
  2860.     DESQview will discontinue the automatic screen updating initiated by
  2861.       AH=FEh after this call
  2862. SeeAlso: AH=FEh
  2863. ----------10FF-------------------------------
  2864. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  2865.     AH = FFh
  2866.     AL = video mode
  2867.         00h 80x25 text
  2868.         01h default text
  2869.         02h CXxDX text
  2870.         03h biggest text
  2871.         04h 320x200 graphics
  2872.         05h default graphics
  2873.         06h CXxDX graphics
  2874.         07h    biggest non-interlaced graphics
  2875.         08h biggest graphics
  2876. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  2877. ----------10FF00-----------------------------
  2878. INT 10 - CARBON COPY PLUS 5.0 - CHECK IF CC CONNECTED TO CCHELP
  2879.     AX = FF00h
  2880. Return: BL = 00h not connected
  2881.        = 01h connected
  2882. ----------10FF01-----------------------------
  2883. INT 10 - CARBON COPY PLUS 5.0 - DISCONNECT AND RESET LINE
  2884.     AX = FF01h
  2885. ----------10FF02-----------------------------
  2886. INT 10 - CARBON COPY PLUS 5.0 - GET LAST PHONE NUMBER DIALED
  2887.     AX = FF02h
  2888. Return: ES:DI -> ASCIZ phone number
  2889. ----------11---------------------------------
  2890. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  2891.    Bit AC in the EFLAGS register enables this interrupt on a memory reference
  2892.      on a mis-aligned address when in privilege mode 3.
  2893. ----------11---------------------------------
  2894. INT 11 - BIOS - GET EQUIPMENT LIST
  2895. Return: AX = BIOS equipment list word
  2896.         bits
  2897.         0      floppy disk(s) installed (see bits 6-7)
  2898.         1      80x87 coprocessor installed
  2899.         2,3      number of 16K banks of RAM on motherboard (PC only)
  2900.           number of 64K banks of RAM on motherboard (XT only)
  2901.         2      pointing device installed (PS)
  2902.         3      unused (PS)
  2903.         4-5      initial video mode
  2904.           00 EGA, VGA, or PGA
  2905.           01 40x25 color
  2906.           10 80x25 color
  2907.           11 80x25 monochrome
  2908.         6-7      number of floppies installed less 1 (if bit 0 set)
  2909.         8      DMA support installed (PCjr, some Tandy 1000s, 1400LT)
  2910.         9-11  number of serial ports installed
  2911.         12      game port installed
  2912.         13      serial printer attached (PCjr)
  2913.           internal modem installed (PC/Convertible)
  2914.         14-15 number of parallel ports installed
  2915. ---Compaq and many other 386/486 machines--
  2916.     EAX bit 23: page tables set so that Weitek coprocessor addressable in
  2917.             real mode
  2918.         bit 24: Weitek math coprocessor present
  2919. ---Compaq Systempro
  2920.     EAX bit 25: internal DMA parallel port available
  2921.         26: IRQ for internal DMA parallel port (if bit 25 set)
  2922.             0 = IRQ5
  2923.             1 = IRQ7
  2924.          27,28: parallel port DMA channel
  2925.             00 DMA channel 0
  2926.             01 DMA channel 0 ???
  2927.             10 reserved
  2928.             11 DMA channel 3
  2929. SeeAlso: INT 12
  2930. ----------11BC--DX1954-----------------------
  2931. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  2932.     AH = BCh
  2933.     DX = 1954h
  2934. Return: AX = 1954h
  2935.     ES:DX -> entry point of driver (instead of INT 14)
  2936. ----------11FFFECXFFFE-----------------------
  2937. INT 11 - BACK&FORTH (before v1.62) API
  2938.     AX = FFFEh
  2939.     CX = FFFEh
  2940.     BX = function
  2941.         00h installation check
  2942.         Return: AX = 0001h BNFHIGH and BNFLOW both loaded
  2943.                = 0003h only BNFHIGH loaded
  2944.                else neither loaded
  2945.         01h ???
  2946.         Return: DX:AX -> ???
  2947.         02h ???
  2948.         03h ???
  2949.         04h ???
  2950.         05h ??? switches current PSP segment and stack if BNFLOW has not
  2951.             yet announced itself installed
  2952.         06h ???
  2953.         Return: AX = ???
  2954. SeeAlso: INT 12/AX=FFFEh
  2955. ----------12---------------------------------
  2956. INT 12 - BIOS - GET MEMORY SIZE
  2957. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  2958. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  2959.       XT, this value is set from the switches on the motherboard
  2960. SeeAlso: INT 11
  2961. ----------12FFFECXFFFE-----------------------
  2962. INT 12 - Back&Forth v1.62+ - API
  2963.     AX = FFFEh
  2964.     CX = FFFEh
  2965.     BX = function
  2966.         00h installation check
  2967.         Return: AX = 0001h installed
  2968.                  else  not loaded
  2969.         02h build program ID list
  2970.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  2971.         Return: AX = number of programs defined
  2972.             ES:DI buffer filled with AX words
  2973.         03h switch to specified task (task need not be open yet)
  2974.         DX = two-letter program ID
  2975.         Return: AX = 0000h if task undefined
  2976. SeeAlso: INT 11/AX=FFFEh
  2977. ----------1300-------------------------------
  2978. INT 13 - DISK - RESET DISK SYSTEM
  2979.     AH = 00h
  2980.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  2981. Return: AH = status (see AH=01h)
  2982. Note:    forces controller to recalibrate drive heads (seek to track 0)
  2983. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4E"TI Professional"
  2984. ----------1301-------------------------------
  2985. INT 13 - DISK - GET STATUS OF LAST OPERATION
  2986.     AH = 01h
  2987.     DL = drive (bit 7 set for hard disk)
  2988. Return: AH = status of this call (00h)
  2989.     AL = status of previous operation
  2990.         00h successful completion
  2991.         01h invalid function in AH or invalid parameter
  2992.         02h address mark not found
  2993.         03h disk write-protected (floppy)
  2994.         04h sector not found
  2995.         05h reset failed (hard disk)
  2996.         06h disk changed (floppy)
  2997.         07h drive parameter activity failed (hard disk)
  2998.         08h DMA overrun
  2999.         09h attempted DMA across 64K boundary
  3000.         0Ah bad sector detected (hard disk)
  3001.         0Bh bad track detected (hard disk)
  3002.         0Ch unsupported track or invalid media
  3003.         0Dh invalid number of sectors on format (hard disk)
  3004.         0Eh control data address mark detected (hard disk)
  3005.         0Fh DMA arbitration level out of range (hard disk)
  3006.         10h uncorrectable CRC or ECC error on read
  3007.         11h data ECC corrected (hard disk)
  3008.         20h controller failure
  3009.         40h seek failed
  3010.         80h timeout (not ready)
  3011.         AAh drive not ready (hard disk)
  3012.         BBh undefined error (hard disk)
  3013.         CCh write fault (hard disk)
  3014.         E0h status register error (hard disk)
  3015.         FFh sense operation failed (hard disk)
  3016. Note:    some BIOSes return the status of the previous operation in AH
  3017. ----------1302-------------------------------
  3018. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  3019.     AH = 02h
  3020.     AL = number of sectors to read (must be nonzero)
  3021.     CH = low eight bits of cylinder number
  3022.     CL = sector number (bits 0-5)
  3023.          high two bits of cylinder (bits 6-7, hard disk only)
  3024.     DH = head number
  3025.     DL = drive number (bit 7 set for hard disk)
  3026.     ES:BX -> data buffer
  3027. Return: CF set on error
  3028.         if AH = 11h (corrected ECC error), AL = burst length
  3029.     CF clear if successful
  3030.     AH = status (see AH=01h)
  3031.     AL = number of sectors transferred
  3032. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  3033.       enough; the read should be retried at least three times, resetting
  3034.       the disk with AH=00h between attempts
  3035.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3036.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3037.     apparently, the AMI BIOS also follows this convention
  3038. SeeAlso: AH=03h,AH=0Ah
  3039. ----------1303-------------------------------
  3040. INT 13 - DISK - WRITE DISK SECTOR(S)
  3041.     AH = 03h
  3042.     AL = number of sectors to write (must be nonzero)
  3043.     CH = low eight bits of cylinder number
  3044.     CL = sector number (bits 0-5)
  3045.          high two bits of cylinder (bits 6-7, hard disk only)
  3046.     DH = head number
  3047.     DL = drive number (bit 7 set for hard disk)
  3048.     ES:BX -> data buffer
  3049. Return: CF set on error
  3050.     CF clear if successful
  3051.     AH = status (see AH=01h)
  3052.     AL = number of sectors transferred
  3053. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  3054.       enough; the write should be retried at least three times, resetting
  3055.       the disk with AH=00h between attempts
  3056.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3057.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3058.     apparently, the AMI BIOS also follows this convention
  3059. SeeAlso: AH=02h,AH=0Bh
  3060. ----------1304-------------------------------
  3061. INT 13 - DISK - VERIFY DISK SECTOR(S)
  3062.     AH = 04h
  3063.     AL = number of sectors to verify (must be nonzero)
  3064.     CH = low eight bits of cylinder number
  3065.     CL = sector number (bits 0-5)
  3066.          high two bits of cylinder (bits 6-7, hard disk only)
  3067.     DH = head number
  3068.     DL = drive number (bit 7 set for hard disk)
  3069.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  3070. Return: CF set on error
  3071.     CF clear if successful
  3072.     AH = status (see AH=01h)
  3073.     AL = number of sectors verified
  3074. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  3075.       enough; the write should be retried at least three times, resetting
  3076.       the disk with AH=00h between attempts
  3077.     this function does not compare the disk with memory, it merely
  3078.       checks whether the sector's stored CRC matches the data's actual CRC
  3079.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3080.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3081.     apparently, the AMI BIOS also follows this convention
  3082. SeeAlso: AH=02h
  3083. ----------1305-------------------------------
  3084. INT 13 - FLOPPY - FORMAT TRACK
  3085.     AH = 05h
  3086.     AL = number of sectors to format
  3087.     CH = track number
  3088.     DH = head number
  3089.     DL = drive number
  3090.     ES:BX -> address field buffer (see below)
  3091. Return: CF set on error
  3092.     CF clear if successful
  3093.     AH = status (see AH=01h)
  3094. Notes:    on AT or higher, call AH=17h first
  3095.     the number of sectors per track is read from the diskette parameter
  3096.       table pointed at by INT 1E
  3097. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  3098.  
  3099. Format of address field buffer entry (one per sector in track):
  3100. Offset    Size    Description
  3101.  00h    BYTE    track number
  3102.  01h    BYTE    head number (0-based)
  3103.  02h    BYTE    sector number
  3104.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  3105. ----------1305-------------------------------
  3106. INT 13 - FIXED DISK - FORMAT TRACK
  3107.     AH = 05h
  3108.     AL = interleave value (XT-type controllers only)
  3109.     ES:BX = 512-byte format buffer
  3110.         the first 2*(sectors/track) bytes contain F,N for each sector
  3111.            F = 00h for good sector, 80h for bad sector
  3112.            N = sector number
  3113.     CH = cylinder number (bits 8,9 in high bits of CL)
  3114.     CL = high bits of cylinder number (bits 7,6)
  3115.     DH = head
  3116.     DL = drive
  3117. Return: AH = status code (see AH=01h)
  3118. Notes:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3119.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3120.     apparently, the AMI BIOS also follows this convention
  3121.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  3122.       first
  3123. SeeAlso: AH=05h"FLOPPY",AH=06h,AH=07h,AH=0Fh,AH=18h,AH=1Ah
  3124. ----------1306-------------------------------
  3125. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  3126.     AH = 06h
  3127.     AL = interleave value
  3128.     CH = cylinder number (bits 8,9 in high bits of CL)
  3129.     CL = sector number
  3130.     DH = head
  3131.     DL = drive
  3132. Return: AH = status code (see AH=01h)
  3133. Notes:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3134.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3135.     apparently, the AMI BIOS also follows this convention
  3136. ----------1307-------------------------------
  3137. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  3138.     AH = 07h
  3139.     AL = interleave value (XT only)
  3140.     ES:BX = 512-byte format buffer (see AH=05h)
  3141.     CH = cylinder number (bits 8,9 in high bits of CL)
  3142.     CL = sector number
  3143.     DH = head
  3144.     DL = drive
  3145. Return: AH = status code (see AH=01h)
  3146. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3147.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3148.     apparently, the AMI BIOS also follows this convention
  3149. SeeAlso: AH=1Ah
  3150. ----------1308-------------------------------
  3151. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS)
  3152.     AH = 08h
  3153.     DL = drive (bit 7 set for hard disk)
  3154. Return: CF set on error
  3155.         AH = status (07h) (see AH=01h)
  3156.     CF clear if successful
  3157.         AH = 00h
  3158.         BL = drive type (see AH=17h) (AT/PS2 floppies only)
  3159.         CH = low eight bits of maximum cylinder number
  3160.         CL = maximum sector number (bits 5-0)
  3161.          high two bits of maximum cylinder number (bits 7-6)
  3162.         DH = maximum head number
  3163.         DL = number of drives
  3164.         ES:DI -> drive parameter table (floppies only)
  3165. Note:    may return successful even though specified drive is greater than the
  3166.       number of attached drives of that type (floppy/hard); check DL to
  3167.       ensure validity
  3168. SeeAlso: INT 1E,INT 41
  3169. ----------1309-------------------------------
  3170. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  3171.     AH = 09h
  3172.     DL = drive (80h for first, 81h for second)
  3173. Return: CF clear if successful
  3174.     CF set on error
  3175.     AH = status (see AH=01h)
  3176. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  3177.       INT 41
  3178.     on the AT and later, this function uses the parameter table pointed at
  3179.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  3180.       DL=81h
  3181. SeeAlso: INT 41,INT 46
  3182. ----------130A-------------------------------
  3183. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  3184.     AH = 0Ah
  3185.     AL = number of sectors
  3186.     CH = low eight bits of cylinder number
  3187.     CL = sector number (bits 5-0)
  3188.          high two bits of cylinder number (bits 7-6)
  3189.     DH = head number
  3190.     DL = drive number (80h = first, 81h = second)
  3191.     ES:BX -> data buffer
  3192. Return: CF clear if successful
  3193.     CF set on error
  3194.     AH = status (see AH=01h)
  3195.     AL = number of sectors transferred
  3196. Notes:    this function reads in four to seven bytes of error-correcting code
  3197.       along with each sector's worth of information
  3198.     data errors are not automatically corrected, and the read is aborted
  3199.       after the first sector with an ECC error
  3200.     used for diagnostics only on PS/2 systems
  3201. SeeAlso: AH=02h,AH=0Bh
  3202. ----------130B-------------------------------
  3203. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  3204.     AH = 0Bh
  3205.     AL = number of sectors
  3206.     CH = low eight bits of cylinder number
  3207.     CL = sector number (bits 5-0)
  3208.          high two bits of cylinder number (bits 7-6)
  3209.     DH = head number
  3210.     DL = drive number (80h = first, 81h = second)
  3211.     ES:BX -> data buffer
  3212. Return: CF clear if successful
  3213.     CF set on error
  3214.     AH = status (see AH=01h)
  3215.     AL = number of sectors transferred
  3216. Notes:    each sector's worth of data must be followed by four to seven bytes of
  3217.       error-correction information
  3218.     used for diagnostics only on PS/2 systems
  3219. SeeAlso: AH=03h,AH=0Ah
  3220. ----------130C-------------------------------
  3221. INT 13 - HARD DISK - SEEK TO CYLINDER
  3222.     AH = 0Ch
  3223.     CH = low eight bits of cylinder number
  3224.     CL = sector number (bits 5-0)
  3225.          high two bits of cylinder number (bits 7-6)
  3226.     DH = head number
  3227.     DL = drive number (80h = first, 81h = second hard disk)
  3228. Return: CF set on error
  3229.     CF clear if successful
  3230.     AH = status (see AH=01h)
  3231. SeeAlso: AH=00h,AH=02h,AH=0Ah
  3232. ----------130D-------------------------------
  3233. INT 13 - HARD DISK - RESET HARD DISKS
  3234.     AH = 0Dh
  3235.     DL = drive number (80h = first, 81h = second hard disk)
  3236. Return: CF set on error
  3237.     CF clear if successful
  3238.     AH = status (see AH=01h)
  3239. Notes:    reinitializes the hard disk controller, resets the specified drive's
  3240.       parameters, and recalibrates the drive's heads (seek to track 0)
  3241.     not for PS/2 ESDI drives
  3242. SeeAlso: AH=00h,INT 21/AH=0Dh
  3243. ----------130E-------------------------------
  3244. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  3245.     AH = 0Eh
  3246.     DL = drive number (80h = first, 81h = second hard disk)
  3247.     ES:BX -> buffer
  3248. Return: CF set on error
  3249.     CF clear if successful
  3250.     AH = status code (see AH=01h)
  3251. Notes:    transfers controller's sector buffer.  No data is read from the drive
  3252.     used for diagnostics only on PS/2 systems
  3253. SeeAlso: AH=0Ah
  3254. ----------130F-------------------------------
  3255. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  3256.     AH = 0Fh
  3257.     DL = drive number (80h = first, 81h = second hard disk)
  3258.     ES:BX -> buffer
  3259. Return: CF set on error
  3260.     CF clear if successful
  3261.     AH = status code (see AH=01h)
  3262. Notes:    does not write data to the drive
  3263.     should be called before formatting to initialize an XT-type
  3264.       controller's sector buffer
  3265.     used for diagnostics only on PS/2 systems
  3266. SeeAlso: AH=0Bh
  3267. ----------1310-------------------------------
  3268. INT 13 - HARD DISK - CHECK IF DRIVE READY
  3269.     AH = 10h
  3270.     DL = drive number (80h = first, 81h = second hard disk)
  3271. Return: CF set on error
  3272.     CF clear if successful
  3273.     AH = status (see AH=01h)
  3274. ----------1311-------------------------------
  3275. INT 13 - HARD DISK - RECALIBRATE DRIVE
  3276.     AH = 11h
  3277.     DL = drive number (80h = first, 81h = second hard disk)
  3278. Return:    CF set on error
  3279.     CF clear if successful
  3280.     AH = status (see AH=01h)
  3281. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  3282. SeeAlso: AH=00h,AH=0Ch,AH=19h"FIXED DISK"
  3283. ----------1312-------------------------------
  3284. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  3285.     AH = 12h
  3286.     DL = drive number (80h = first, 81h = second hard disk)
  3287. Return: CF set on error
  3288.     CF clear if successful
  3289.     AH = status code (see AH=01h)
  3290. SeeAlso: AH=13h,AH=14h
  3291. ----------1312-------------------------------
  3292. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  3293.     AH = 12h
  3294.     DL = hard drive ID
  3295. Return: CF set on error
  3296.     AH = status code (see AH=01h)
  3297. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  3298.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  3299.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  3300.       is displayed
  3301. ----------1313-------------------------------
  3302. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  3303.     AH = 13h
  3304.     DL = drive number (80h = first, 81h = second hard disk)
  3305. Return: CF set on error
  3306.     CF clear if successful
  3307.     AH = status code (see AH=01h)
  3308. SeeAlso: AH=12h,AH=14h
  3309. ----------1314-------------------------------
  3310. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  3311.     AH = 14h
  3312. Return: CF set on error
  3313.     CF clear if successful
  3314.     AH = status code (see AH=01h)
  3315. SeeAlso: AH=12h,AH=13h
  3316. ----------1315-------------------------------
  3317. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  3318.     AH = 15h
  3319.     DL = drive number (bit 7 set for hard disk)
  3320. Return:    CF clear if successful
  3321.         AH = type code
  3322.         00h no such drive
  3323.         01h floppy without change-line support
  3324.         02h floppy with change-line support
  3325.         03h hard disk
  3326.             CX:DX = number of 512-byte sectors
  3327.     CF set on error
  3328.         AH = status (see AH=01h)
  3329. SeeAlso: AH=16h,AH=17h,AH=19h"SCSI"
  3330. ----------1316-------------------------------
  3331. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  3332.     AH = 16h
  3333.     DL = drive number
  3334. Return: CF clear if change line inactive
  3335.         AH = 00h (disk not changed)
  3336.     CF set if change line active
  3337.         AH = 06h change line active or not supported
  3338.            = 80h drive not ready or not present
  3339. Note:    call AH=15h first to determine whether the drive supports a change
  3340.       line
  3341. SeeAlso: AH=15h
  3342. ----------1317-------------------------------
  3343. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  3344.     AH = 17h
  3345.     AL = format type
  3346.         01h = 320/360K disk in 360K drive
  3347.         02h = 320/360K disk in 1.2M drive
  3348.         03h = 1.2M disk in 1.2M drive
  3349.         04h = 720K disk in 720K drive
  3350.     DL = drive number
  3351. Return: CF set on error
  3352.     CF clear if successful
  3353.     AH = status (see AH=01h)
  3354. Note:    this function does not handle 1.44M drives; use AH=18h instead
  3355. SeeAlso: AH=15h,AH=18h
  3356. ----------1318-------------------------------
  3357. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  3358.     AH = 18h
  3359.     DL = drive number
  3360.     CH = lower 8 bits of number of tracks
  3361.     CL = sectors per track (bits 0-5)
  3362.          top 2 bits of number of tracks (bits 6,7)
  3363. Return: AH = status
  3364.         00h requested combination supported
  3365.         01h function not available
  3366.         0Ch not supported or drive type unknown
  3367.         80h there is no disk in the drive
  3368.     ES:DI -> 11-byte parameter table
  3369. SeeAlso: AH=05h,AH=07h,AH=17h
  3370. ----------1318-------------------------------
  3371. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  3372.     AH = 18h
  3373.     DL = hard drive ID
  3374. Return: CF set on error
  3375.         AH = status code (see AH=01h)
  3376.     CF clear if successful
  3377.         AX = 4321h (magic number???)
  3378.         BH = number of SCSI drives connected
  3379.         BL = SCSI device number for specified drive
  3380.         CX = 040Ah (magic number???)
  3381. Note:    also sets an internal flag (non-resettable) which prevents some
  3382.       controller messages from being displayed and allows writes to
  3383.       removable devices
  3384. SeeAlso: AH=1Bh"SCSI"
  3385. ----------1319-------------------------------
  3386. INT 13 - FIXED DISK - PARK HEADS (XT286,PS)
  3387.     AH = 19h
  3388.     DL = drive
  3389. Return: CF set on error
  3390.     AH = status (see AH=01h)
  3391. SeeAlso: AH=11h
  3392. ----------1319-------------------------------
  3393. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  3394.     AH = 19h
  3395.     DL = hard drive ID
  3396. Return: CF set on error
  3397.         AH = status code (see AH=01h)
  3398.     CF clear if successful
  3399.         AH = disk type (03h = fixed disk)
  3400.         CX:DX = number of 512-byte sectors
  3401. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  3402.       adjusts the result for 512-byte sectors
  3403.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  3404.       sector" (nnn=256 or 512, the only sizes supported in the translation
  3405.       code)
  3406.     should probably be called when a removable device has its media changed
  3407.     returns the same values as AH=15h
  3408. SeeAlso: AH=15h,AH=1Ah
  3409. ----------131A-------------------------------
  3410. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  3411.     AH = 1Ah
  3412.     AL = defect table count
  3413.     CL = format modifiers
  3414.         bit 4: generate periodic interrupt
  3415.         bit 3: perform surface analysis
  3416.         bit 2: update secondary defect map
  3417.         bit 1: ignore secondary defect map
  3418.         bit 0: ignore primary defect map
  3419.     DL = drive
  3420.     ES:BX -> defect table
  3421. Return: CF set on error
  3422.     AH = status (see AH=01h)
  3423. Note:    if periodic interrupt selected, INT 15h/AH=0Fh is called after each
  3424.       cylinder is formatted
  3425. SeeAlso: AH=07h,INT 15/AH=0Fh
  3426. ----------131A-------------------------------
  3427. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  3428.     AH = 1Ah
  3429.     CH = track (bits 8,9 in high bits of CL)
  3430.     CL = sector (01h to number of sectors/track for drive)
  3431.     DH = head
  3432.     DL = hard drive ID
  3433. Return: CF set on error
  3434.     AH = status code (see AH=01h)
  3435.     CX:DX = logical block number of last quickly-accessible block after
  3436.         given block
  3437. Note:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  3438.       logical block address of the last block after which a substantial
  3439.       delay in data transfer will be encountered (usually the last block
  3440.       on the current cylinder).  No translation to 512 byte sectors is
  3441.       performed on the result if data is stored on the disk in other than
  3442.       512 byte sectors.
  3443. SeeAlso: AH=15h,AH=19h"SCSI"
  3444. ----------131B-------------------------------
  3445. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  3446.     AH = 1Bh
  3447.     AL = number of record
  3448.     DL = drive
  3449.     ES:BX -> buffer for manufacturing header (defect list)
  3450. Return: CF set on error
  3451.         AH = status
  3452. Note:    manufacturing header format (Defect Map Record format) can be found
  3453.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  3454. ----------131B-------------------------------
  3455. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  3456.     AH = 1Bh
  3457.     DL = hard drive ID
  3458. Return: CF set on error
  3459.         AH = status code (see AH=01h)
  3460.     CF clear if successful
  3461.         ES:BX -> SCSI disk information block
  3462. Note:    also sets a non-resettable flag which prevents some controller messages
  3463.       from being displayed
  3464. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  3465.  
  3466. Format of SCSI disk information block:
  3467. Offset    Size    Description
  3468.  00h    BYTE    drive physical information
  3469.         bit 0: ???
  3470.         bit 1: device uses parity
  3471.         bit 2: 256 bytes per sector instead of 512
  3472.         bit 3: don't have capacity yet???
  3473.         bit 4: disk is removable
  3474.         bit 5: logical unit number is not present
  3475.  01h    WORD    translated number of cylinders
  3476.  03h    BYTE    translated number of heads
  3477.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  3478.  05h    BYTE    drive address
  3479.         bits 0-2: logical unit number
  3480.         bits 3-5: device number
  3481.  06h    BYTE    01h at initialization
  3482.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  3483.  08h    BYTE    00h
  3484.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  3485.  0Ah    BYTE    00h
  3486.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB)
  3487.  15h    DWORD    translated number of sectors on device
  3488. ----------131C-------------------------------
  3489. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  3490.     AH = 1Ch
  3491.     DL = hard drive ID (any valid SCSI hard disk)
  3492. Return: CF set on error
  3493.         AH = status code (see AH=01h)
  3494.     CF clear if successful
  3495.         ES:BX -> first byte of free RAM on controller
  3496. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  3497.       to 1BFFh on-bard the controller for storing drive information and
  3498.       controller status; ES:BX points to the first byte available for other
  3499.       uses
  3500.     ES contains the segment at which the controller resides; the
  3501.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  3502. SeeAlso: AH=1Bh"SCSI"
  3503. ----------131C0A-----------------------------
  3504. INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  3505.     AX = 1C0Ah
  3506.     DL = drive
  3507.     ES:BX -> buffer for device configuration (drive physical parameter)
  3508. Return: CF set on error
  3509.         AH = status
  3510. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  3511.       Adapter/A Technical Reference
  3512. ----------131C0B-----------------------------
  3513. INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  3514.     AX = 1C0Bh
  3515.     ES:BX -> buffer for adapter configuration
  3516. Return: CF set on error
  3517.         AH = status
  3518. SeeAlso: AX=1C0Ch
  3519. ----------131C0C-----------------------------
  3520. INT 13 - ESDI FIXED DISK - GET POS INFORMATION
  3521.     AX = 1C0Ch
  3522.     ES:BX -> POS information
  3523. Return: CF set on error
  3524.         AH = status
  3525. SeeAlso: AX=1C0Bh
  3526. ----------131C0E-----------------------------
  3527. INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  3528.     AX = 1C0Eh
  3529.     CH = low 8 bits of cylinder number
  3530.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  3531.     DH = head number
  3532.     DL = drive number
  3533.     ES:BX -> ABA number
  3534. Return: CF set on error
  3535.         AH = status
  3536. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  3537.       Technical Reference by using its Device Configuration Status Block
  3538. ----------131D-------------------------------
  3539. INT 13 - IBMCACHE.SYS - CACHE STATUS
  3540.     AH = 1Dh
  3541.     AL = subfunction
  3542.         01h get status record
  3543.         DL = drive???
  3544.         Return: ES:BX -> status record
  3545.             CF set on error
  3546.                 AH = error code
  3547.         02h set cache status
  3548.         ES:BX -> status record
  3549.         DL = drive???
  3550.         Return: CF set on error
  3551.  
  3552. Format of status record:
  3553. Offset    Size    Description
  3554.  00h    DWORD    total number of read requests
  3555.  04h    DWORD    total number of hits
  3556.  08h    DWORD    number of physical disk reads
  3557.  0Ch    DWORD    total number of sectors requested by physical disk reads
  3558.  10h  6 bytes    ???
  3559.  16h    DWORD    pointer to start of error list
  3560.  1Ah    DWORD    pointer to end of error list
  3561.  1Eh    WORD    ???
  3562.  20h    BYTE    using extended memory if nonzero
  3563.  21h    BYTE    ???
  3564.  22h  4 BYTEs    ASCII version number
  3565.  26h    WORD    cache size in K
  3566.  28h    WORD    sectors per page
  3567.  
  3568. Format of error list:
  3569. Offset    Size    Description
  3570.  00h    DWORD    relative block address of bad page
  3571.  04h    BYTE    drive
  3572.  05h    BYTE    sector bit-map
  3573.  06h    WORD    next error
  3574. ----------1320-------------------------------
  3575. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  3576.     AH = 20h
  3577.     ???
  3578. Return: ???
  3579. Note:    seems to return some kind of status
  3580. ----------1320FF-----------------------------
  3581. INT 13 - QCACHE - DISMOUNT
  3582.     AX = 20FFh
  3583. Return: ???
  3584. ----------1321-------------------------------
  3585. INT 13 - QCACHE - FLUSH CACHE
  3586.     AH = 21h
  3587. Return: ???
  3588. SeeAlso: AH=25h,AH=2Eh
  3589. ----------1322-------------------------------
  3590. INT 13 - QCACHE - ENABLE/DISABLE CACHE
  3591.     AH = 22h
  3592.     AL = 00h disable cache
  3593.          01h enable cache
  3594. ----------1324-------------------------------
  3595. INT 13 - QCACHE - SET SECTORS
  3596.     AH = 24h
  3597.     BX = number of sectors
  3598. Return: ???
  3599. ----------1325-------------------------------
  3600. INT 13 - QCACHE - SET FLUSH INTERVAL
  3601.     AH = 25h
  3602.     BC = interval
  3603. Return: ???
  3604. SeeAlso: AH=21h,AH=2Eh
  3605. ----------1327--BX0000-----------------------
  3606. INT 13 - QCACHE - INSTALLATION CHECK
  3607.     AH = 27h
  3608.     BX = 0000h
  3609. Return: BX nonzero if installed
  3610. ----------132A-------------------------------
  3611. INT 13 - QCACHE - SET BUFFER SIZE
  3612.     AH = 2Ah
  3613.     AL = buffer size
  3614. Return: ???
  3615. ----------132C-------------------------------
  3616. INT 13 - QCACHE - SET BUFFERED WRITES
  3617.     AH = 2Ch
  3618.     AL = state
  3619.         00h disable
  3620.         01h enable
  3621. Return: ???
  3622. SeeAlso: AH=2Dh
  3623. ----------132D-------------------------------
  3624. INT 13 - QCACHE - SET BUFFERED READ
  3625.     AH = 2Dh
  3626.     AL = state
  3627.         00h disable
  3628.         01h enable
  3629. Return: ???
  3630. SeeAlso: AH=2Ch
  3631. ----------132E-------------------------------
  3632. INT 13 - QCACHE - SET FLUSH COUNT
  3633.     AH = 2Eh
  3634.     BX = flush count
  3635. Return: ???
  3636. SeeAlso: AH=21h,AH=25h
  3637. ----------1330-------------------------------
  3638. INT 13 - QCACHE - GET INFO
  3639.     AH = 30h
  3640.     AL = what to get
  3641.         00h system info
  3642.         01h drive info
  3643.     DS:DX -> buffer for info
  3644. Return: ???
  3645. ----------1370-------------------------------
  3646. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  3647.     AH = 70h
  3648.     ???
  3649. Return: ???
  3650. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  3651.       formatting program) make this call, presumably to EDVR.SYS (the
  3652.       partitioning driver)
  3653. SeeAlso: AH=ADh
  3654. ----------1375-------------------------------
  3655. INT 13 - ???
  3656.     AH = 75h
  3657.     ???
  3658. Return: AH = ???
  3659.     ???
  3660. Note:    intercepted by PC-Cache (v5.1 only)
  3661. ----------1376-------------------------------
  3662. INT 13 - ???
  3663.     AH = 76h
  3664.     ???
  3665. Return: AH = ???
  3666.     ???
  3667. Note:    intercepted by PC-Cache (v5.1 only)
  3668. ----------1381--SI4358-----------------------
  3669. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  3670.     AH = 81h
  3671.     SI = 4358h
  3672.     ???
  3673. Return: ???
  3674. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  3675.       supports this call
  3676.     returns immediately in PC-Cache v5.x
  3677. ----------1382--SI4358-----------------------
  3678. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  3679.     AH = 82h
  3680.     SI = 4358h
  3681.     ???
  3682. Return: AL = ???
  3683. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  3684.       supports this call
  3685. SeeAlso: AH=84h
  3686. ----------1383--SI4358-----------------------
  3687. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  3688.     AH = 83h
  3689.     SI = 4358h
  3690.     AL = ???
  3691.     ES:BX -> ???
  3692.     ???
  3693. Return: ???
  3694. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  3695.       supports this call
  3696. SeeAlso: AH=85h
  3697. ----------1384--SI4358-----------------------
  3698. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  3699.     AH = 84h
  3700.     SI = 4358h
  3701.     AL = ???
  3702.     ???
  3703. Return: AL = ???
  3704. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  3705.       supports this call
  3706. SeeAlso: AH=82h
  3707. ----------1385--SI4358-----------------------
  3708. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  3709.     AH = 85h
  3710.     SI = 4358h
  3711.     AL = ???
  3712.     DL = ???
  3713.     ???
  3714. Return: ???
  3715. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  3716.       supports this call
  3717. SeeAlso: AH=83h
  3718. ----------138EED-----------------------------
  3719. INT 13 - HyperDisk 4.01+ - ???
  3720.     AX = 8EEDh
  3721.     ???
  3722. Return: ???
  3723. Note:    HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  3724. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
  3725. ----------138EEE-----------------------------
  3726. INT 13 - HyperDisk 4.01+ - ???
  3727.     AX = 8EEEh
  3728. Return: CF set
  3729.     AX = CS of HyperDisk resident code
  3730.     ???
  3731. Note:    identical to AX=8EEFh in HYPERDKX v4.21
  3732. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  3733. ----------138EEF-----------------------------
  3734. INT 13 - HyperDisk 4.01+ - ???
  3735.     AX = 8EEFh
  3736. Return: CF set
  3737.     AX = CS of HyperDisk resident code
  3738.     ???
  3739. Note:    identical to AX=8EEEh in HYPERDKX v4.21
  3740. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  3741. ----------13A0--SI4358-----------------------
  3742. INT 13 - Super PC Kwik - GET RESIDENT CODE SEGMENT
  3743.     AH = A0h
  3744.     SI = 4358h
  3745. Return: AX = segment of resident code
  3746. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  3747.       supports this call
  3748. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  3749. ----------13A1--SI4358-----------------------
  3750. INT 13 - Super PC Kwik - FLUSH CACHE
  3751.     AH = A1h
  3752.     SI = 4358h
  3753. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  3754.       supports this call
  3755. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  3756. ----------13A2--SI4358-----------------------
  3757. INT 13 - Super PC Kwik - ???
  3758.     AH = A2h
  3759.     SI = 4358h
  3760.     ???
  3761. Return: ???
  3762. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  3763.       supports this call
  3764. ----------13AD-------------------------------
  3765. INT 13 - Priam HARD DISK CONTROLLER???
  3766.     AH = ADh
  3767.     ???
  3768. Return: ???
  3769. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  3770.       to check the ROM type on the controller for their hard disk kits
  3771. SeeAlso: AH=70h
  3772. ----------13B0--SI4358-----------------------
  3773. INT 13 - Super PC Kwik - ???
  3774.     AH = B0h
  3775.     SI = 4358h
  3776.     ???
  3777. Return: ???
  3778. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  3779.       supports this call
  3780. ----------13EE-------------------------------
  3781. INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
  3782.     AH = EEh
  3783.     DL = drive number (80h, 81h)
  3784. Return: CF clear
  3785.        AH = 00h
  3786. Notes:    the following INT 13 call will interpret the cylinder number as 1024
  3787.       less than the desired cylinder
  3788.     flag cleared by all INT 13 calls except AH=EEh
  3789.     SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  3790.       these calls
  3791.     also supported by HyperDisk v4.01+ and PC-Cache v5.5+, in order to allow
  3792.       caching of drives using SWBIOS to access more than 1024 cylinders
  3793. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  3794. ----------13F9-------------------------------
  3795. INT 13 - SWBIOS - INSTALLATION CHECK
  3796.     AH = F9h
  3797.     DL = drive number (80h,81h)
  3798. Return: CF clear 
  3799.         DX = configuration word
  3800.         bit 15 set if other SWBIOS extensions available
  3801.     CF set on error
  3802. Note:    SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  3803.       these calls
  3804. SeeAlso: AH=EEh
  3805. ----------13FE-------------------------------
  3806. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  3807.     AH = FEh
  3808.     DL = drive number (80h, 81h)
  3809. Return: CF clear
  3810.     DX = number of cylinders beyond 1024 on drive
  3811. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  3812.     BIOS without this extension would return count modulo 1024
  3813.     SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  3814.       these calls
  3815. SeeAlso: AH=EEh
  3816. ----------1400-------------------------------
  3817. INT 14 - SERIAL - INITIALIZE PORT
  3818.     AH = 00h
  3819.     AL = port parameters
  3820.         bits 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
  3821.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  3822.         bit 2    stop bits (set = 2, clear = 1)
  3823.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  3824.     DX = port number (00h-03h)
  3825. Return: AH = line status (see AH=03h)
  3826.     AL = modem status (see AH=03h)
  3827. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  3828.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  3829.       bps will result in 4800 bps
  3830. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=82h,AH=8Ch
  3831. ----------1400-------------------------------
  3832. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  3833.     AH = 00h
  3834.     AL = initializing parameters
  3835.         7 - 6 - 5       4 - 3     2      1 - 0
  3836.         -BAUD RATE-       PARITY   STOP   WORD
  3837.                     BITS  LENGTH
  3838.         000 19200 bd   00 none  0: 1  00: 5
  3839.         001 38400 bd   01 odd   1: 2  01: 6
  3840.         010      300 bd   11 even      10: 7
  3841.         011      600 bd          11: 8
  3842.         100     1200 bd
  3843.         101     2400 bd
  3844.         110     4800 bd
  3845.         111     9600 bd (4800 on PCjr)
  3846.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  3847. Return: AH = RS-232 status code bits
  3848.         0: RDA - input data is available in buffer
  3849.         1: OVRN - data has been lost
  3850.         5: THRE - room is available in output buffer
  3851.         6: TSRE - output buffer empty
  3852.     AL = modem status bits
  3853.         3: always 1
  3854.         7: DCD - carrier detect
  3855. SeeAlso: AH=05h"FOSSIL",AH=82h
  3856. ----------1401-------------------------------
  3857. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  3858.     AH = 01h
  3859.     AL = character to write
  3860.     DX = port number (00h-03h)
  3861. Return: AH bit 7 clear if successful
  3862.     AH bit 7 set on error
  3863.     AH bits 6-0 = port status (see AH=03h)
  3864. SeeAlso: AH=02h,AH=0Bh,AH=89h
  3865. ----------1402-------------------------------
  3866. INT 14 - SERIAL - READ CHARACTER FROM PORT
  3867.     AH = 02h
  3868.     DX = port number (00h-03h)
  3869. Return: AH = line status (see AH=03h)
  3870.     AL = received character if AH bit 7 clear
  3871. Note:    will timeout if DSR is not asserted, even if function 03h returns
  3872.       data ready
  3873. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  3874. ----------1402-------------------------------
  3875. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  3876.     AH = 02h
  3877.     DX = port number (0-3)
  3878. Return: AL = character received
  3879.     AH = 00h
  3880. SeeAlso: AH=01h,AH=02h"SERIAL"
  3881. ----------1403-------------------------------
  3882. INT 14 - SERIAL - GET PORT STATUS
  3883.     AH = 03h
  3884.     DX = port number (00h-03h)
  3885. Return: AH = line status
  3886.         bit 7: timeout
  3887.         6: transmit shift register empty
  3888.         5: transmit holding register empty
  3889.         4: break detected
  3890.         3: framing error
  3891.         2: parity error
  3892.         1: overrun error
  3893.         0: receive data ready
  3894.     AL = modem status
  3895.         bit 7: carrier detect
  3896.         6: ring indicator
  3897.         5: data set ready
  3898.         4: clear to send
  3899.         3: delta carrier detect
  3900.         2: trailing edge of ring indicator
  3901.         1: delta data set ready
  3902.         0: delta clear to send
  3903. SeeAlso: AH=00h,AH=07h"MultiDOS",AH=81h"COURIERS",AX=FD02h
  3904. ----------1404-------------------------------
  3905. INT 14 - SERIAL I/O - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  3906.     AH = 04h
  3907.     AL = break status
  3908.         00h if break
  3909.         01h if no break
  3910.     BH = parity
  3911.         00h no parity
  3912.         01h odd parity
  3913.         02h even parity
  3914.         03h stick parity odd
  3915.         04h stick parity even
  3916.     BL = number of stop bits
  3917.         00h one stop bit
  3918.         01h two stop bits (1.5 if 5 bit word length)
  3919.     CH = word length
  3920.         00h 5 bits
  3921.         01h 6 bits
  3922.         02h 7 bits
  3923.         03h 8 bits
  3924.     CL = bps rate
  3925.         00h 110
  3926.         01h 150
  3927.         02h 300
  3928.         03h 600
  3929.         04h 1200
  3930.         05h 2400
  3931.         06h 4800
  3932.         07h 9600
  3933.         08h 19200
  3934.     DX = port number
  3935. Return: AX = port status code (see AH=00h)
  3936. SeeAlso: AH=00h,AH=1Eh
  3937. ----------1404-------------------------------
  3938. INT 14 - FOSSIL - INITIALIZE DRIVER
  3939.     AH = 04h
  3940.     DX = port number
  3941.     optionally BX=4F50h
  3942.            ES:CX -> byte to be set upon ^C
  3943. Return: AX = 1954h (if successful)
  3944.     BL = maximum function number supported (excluding 7Eh and above)
  3945.     BH = revision of FOSSIL supported
  3946.     DTR is raised
  3947. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  3948.       following byte contains the maximum function number supported
  3949. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  3950. ----------1404-------------------------------
  3951. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  3952.     AH = 04h
  3953. Return: port initialized; if Hayes-compatible modem, a connection has been
  3954.       established
  3955. Note:    the port number is stored at offset BEh in the Task Control Block
  3956.       (see INT 15/AH=13h"MultiDOS")
  3957. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3958. ----------1405-------------------------------
  3959. INT 14 - SERIAL I/O - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  3960.     AH = 05h
  3961.     AL = 00h read modem control register
  3962.           Return: BL = modem control register (see below)
  3963.               AH = status
  3964.     AL = 01h write modem control register
  3965.           BL = modem control register
  3966.           bit 0: data terminal ready
  3967.           bit 1: request to send
  3968.           bit 2: OUT1
  3969.           bit 3: OUT2
  3970.           bit 4: LOOP
  3971.           bits 5-7 reserved
  3972.           Return: AX = status
  3973.     DX = port number
  3974. SeeAlso: AH=00h,AH=1Fh
  3975. ----------1405-------------------------------
  3976. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  3977.     AH = 05h
  3978.     DX = port number
  3979. Return: none
  3980.     DTR is not affected
  3981. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  3982. ----------1405-------------------------------
  3983. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  3984.     AH = 05h
  3985.     AL = timeout in seconds (00h = never)
  3986. Return: AL = status
  3987.         00h successful
  3988.             AH = character read
  3989.         01h read error
  3990.         02h timed out
  3991.         other modem status (CTS, DSR) changed
  3992. Note:    the port number is stored at offset BEh in the Task Control Block
  3993. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  3994. SeeAlso: INT 15/AH=13h"MultiDOS"
  3995. ----------1406-------------------------------
  3996. INT 14 - FOSSIL - RAISE/LOWER DTR
  3997.     AH = 06h
  3998.     DX = port
  3999.     AL = DTR state to be set
  4000.         00h = lower
  4001.         01h = raise
  4002. SeeAlso: AH=1Ah
  4003. ----------1406-------------------------------
  4004. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  4005.     AH = 06h
  4006.     AL = character
  4007. Return: AL = status
  4008.         00h successful
  4009. Notes:    the port number is stored at offset BEh in the Task Control Block
  4010.     if output queue is full, the calling task is blocked until the
  4011.       character can be stored
  4012. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  4013. SeeAlso: INT 15/AH=13h"MultiDOS"
  4014. ----------1407-------------------------------
  4015. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  4016.     AH = 07h
  4017. Return: AL = timer tick interrupt number
  4018.     AH = ticks per second on interrupt number in AL
  4019.     DX = approximate number of milliseconds per tick
  4020. SeeAlso: AH=16h
  4021. ----------1407-------------------------------
  4022. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  4023.     AH = 07h
  4024. Return: CL = modem status (see AH=03h)
  4025.     CH = character at head of input queue (if any)
  4026.     DX = number of characters in input queue
  4027. Note:    the port number is stored at offset BEh in the Task Control Block
  4028. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  4029. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4030. ----------1408-------------------------------
  4031. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  4032.     AH = 08h
  4033.     DX = port number
  4034. SeeAlso: AH=09h"FOSSIL"
  4035. ----------1408-------------------------------
  4036. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  4037.     AH = 08h
  4038. Return: AL = line status (see AH=03h)
  4039.     AH destroyed
  4040. Notes:    the port number is stored at offset BEh in the Task Control Block
  4041.     on every line status change, the line status is ORed with the line
  4042.       status accumulator; this function returns the accumulator and clears
  4043.       it
  4044. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4045. ----------1409-------------------------------
  4046. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  4047.     AH = 09h
  4048.     DX = port number
  4049. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  4050. ----------1409-------------------------------
  4051. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  4052.     AH = 09h
  4053. Return: modem status byte cleared
  4054. Note:    the port number is stored at offset BEh in the Task Control Block
  4055. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4056. ----------140A-------------------------------
  4057. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  4058.     AH = 0Ah
  4059.     DX = port number
  4060. SeeAlso: AH=09h"FOSSIL",AH=85h
  4061. ----------140B-------------------------------
  4062. INT 14 - FOSSIL - TRANSMIT NO WAIT
  4063.     AH = 0Bh
  4064.     AL = character
  4065.     DX = port number
  4066. Return: AX = 0000h character not accepted
  4067.        = 0001h character accepted
  4068. SeeAlso: AH=01h
  4069. ----------140C-------------------------------
  4070. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  4071.     AH = 0Ch
  4072.     DX = port number
  4073. Return: AX = FFFFh character not available
  4074.     AX = 00xxh character xx available
  4075. SeeAlso: AH=20h"FOSSIL"
  4076. ----------140D-------------------------------
  4077. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  4078.     AH = 0Dh
  4079. Return: AX = FFFFh character not available
  4080.        = xxyyh standard IBM-style scan code
  4081. SeeAlso: AH=0Eh
  4082. ----------140E-------------------------------
  4083. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  4084.     AH = 0Eh
  4085. Return: AX = xxyyh standard IBM-style scan code
  4086. SeeAlso: AH=0Dh
  4087. ----------140F-------------------------------
  4088. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  4089.     AH = 0Fh
  4090.     AL = bit mask describing flow control requested
  4091.         0: xon/xoff on transmit (watch for xoff while sending)
  4092.         1: CTS/RTS (CTS on transmit/RTS on receive)
  4093.         2: reserved
  4094.         3: xon/xoff on receive (send xoff when buffer near full)
  4095.         4-7: all 1
  4096.     DX = port number
  4097. SeeAlso: AH=10h
  4098. ----------1410-------------------------------
  4099. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  4100.     AH = 10h
  4101.     AL = bit mask
  4102.         0: enable/disable ^C/^K checking
  4103.         1: enable/disable the transmitter
  4104.     DX = port number
  4105. SeeAlso: AH=0Fh
  4106. ----------1411-------------------------------
  4107. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  4108.     AH = 11h
  4109.     DH = row
  4110.     DL = column
  4111. Note:    this is the same as INT 10/AH=02h
  4112. SeeAlso: AH=12h
  4113. ----------1412-------------------------------
  4114. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  4115.     AH = 12h
  4116. Return: DH = row
  4117.     DL = column
  4118. Note:    this is the same as INT 10/AH=03h
  4119. SeeAlso: AH=11h
  4120. ----------1413-------------------------------
  4121. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  4122.     AH = 13h
  4123.     AL = character
  4124. Note:    should not be called if it is unsafe to call DOS
  4125. SeeAlso: AH=15h
  4126. ----------1414-------------------------------
  4127. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  4128.     AH = 14h
  4129.     AL = 01h enable watchdog
  4130.          00h disable watchdog
  4131.     DX = port number
  4132. ----------1415-------------------------------
  4133. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  4134.     AH = 15h
  4135.     AL = character
  4136. SeeAlso: AH=13h
  4137. ----------1416-------------------------------
  4138. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  4139.     AH = 16h
  4140.     AL = function
  4141.         00h = delete
  4142.         01h = add
  4143.     ES:DX -> routine to call
  4144. Return: AX = status
  4145.         0000h successful
  4146.         0001h unsuccessful
  4147. SeeAlso: AH=07h"FOSSIL"
  4148. ----------1417-------------------------------
  4149. INT 14 - FOSSIL - REBOOT SYSTEM
  4150.     AH = 17h
  4151.     AL = method
  4152.         00h = cold boot
  4153.         01h = warm boot
  4154. SeeAlso: INT 19
  4155. ----------1418-------------------------------
  4156. INT 14 - FOSSIL - READ BLOCK
  4157.     AH = 18h
  4158.     CX = maximum number of characters to transfer
  4159.     DX = port number
  4160.     ES:DI -> user buffer
  4161. Return: AX = number of characters transferred
  4162. SeeAlso: AH=19h,AH=83h,AX=FF02h,INT 6B/AX=0100h
  4163. ----------1419-------------------------------
  4164. INT 14 - FOSSIL - WRITE BLOCK
  4165.     AH = 19h
  4166.     CX = maximum number of characters to transfer
  4167.     DX = port number
  4168.     ES:DI -> user buffer
  4169. Return: AX = number of characters transferred
  4170. SeeAlso: AH=18h,AH=86h,INT 6B/AX=0000h
  4171. ----------141A-------------------------------
  4172. INT 14 - FOSSIL - BREAK BEGIN OR END
  4173.     AH = 1Ah
  4174.     AL = 00h stop sending 'break'
  4175.          01h start sending 'break'
  4176.     DX = port number
  4177. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  4178. ----------141B-------------------------------
  4179. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  4180.     AH = 1Bh
  4181.     DX = port number
  4182.     CX = size of user buffer
  4183.     ES:DI -> user buffer for driver info (see below)
  4184. Return: AX = number of characters transferred
  4185.     CX = 3058h ("0X") (X00 FOSSIL only)
  4186.     DX = 2030h (" 0") (X00 FOSSIL only)
  4187.  
  4188. Format of driver info:
  4189. Offset    Size    Description
  4190.  00h    WORD    size of structure in bytes
  4191.  02h    BYTE    FOSSIL spec driver conforms to
  4192.  03h    BYTE    revision level of this specific driver
  4193.  04h    DWORD    pointer to ASCIZ identification string
  4194.  08h    WORD    size of the input buffer
  4195.  0Ah    WORD    number of bytes left in buffer
  4196.  0Ch    WORD    size of the output buffer
  4197.  0Eh    WORD    number of bytes left in buffer
  4198.  10h    BYTE    width of screen
  4199.  11h    BYTE    length of screen
  4200.  12h    BYTE    actual baud rate, computer to modem
  4201. ----------141C-------------------------------
  4202. INT 14 - X00 FOSSIL - ACTIVATE PORT
  4203.     AH = 1Ch
  4204.     DX = port number
  4205. Return: AX = 1954h if successful
  4206.     BL = maximum function number supported (not including 7Eh and above)
  4207.     BH = revision of FOSSIL specification supported
  4208. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  4209.       with the PS/2 BIOS in a future release
  4210. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  4211. ----------141D-------------------------------
  4212. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  4213.     AH = 1Dh
  4214.     DX = port number
  4215. Return: none
  4216. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  4217.       with the PS/2 BIOS in a future release
  4218.     ignored if the port was never activated with AH=04h or AH=1Ch
  4219. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  4220. ----------141E-------------------------------
  4221. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  4222.     AH = 1Eh
  4223.     AL = break status
  4224.         00h if break
  4225.         01h if no break
  4226.     BH = parity
  4227.         00h no parity
  4228.         01h odd parity
  4229.         02h even parity
  4230.         03h stick parity odd
  4231.         04h stick parity even
  4232.     BL = number of stop bits
  4233.         00h one stop bit
  4234.         01h two stop bits (1.5 if 5 bit word length)
  4235.     CH = word length
  4236.         00h 5 bits
  4237.         01h 6 bits
  4238.         02h 7 bits
  4239.         03h 8 bits
  4240.     CL = bps rate
  4241.         00h 110
  4242.         01h 150
  4243.         02h 300
  4244.         03h 600
  4245.         04h 1200
  4246.         05h 2400
  4247.         06h 4800
  4248.         07h 9600
  4249.         08h 19200
  4250.     DX = port number
  4251. Return: AX = port status code (see AH=00h)
  4252. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  4253.     if the port was locked at X00 load time, the appropriate parameters are
  4254.       ignored
  4255. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  4256. ----------141F-------------------------------
  4257. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  4258.     AH = 1Fh
  4259.     AL = 00h read modem control register
  4260.           Return: BL = modem control register (see below)
  4261.               AH = status
  4262.     AL = 01h write modem control register
  4263.           BL = modem control register
  4264.           bit 0: data terminal ready
  4265.           bit 1: request to send
  4266.           bit 2: OUT1
  4267.           bit 3: OUT2 (interrupts) enabled
  4268.           bit 4: LOOP
  4269.           bits 5-7 reserved
  4270.           Return: AX = status
  4271.     DX = port number
  4272. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  4273. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  4274.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  4275. ----------1420-------------------------------
  4276. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  4277.     AH = 20h
  4278.     DX = port number
  4279. Return: AH = 00h if character was available
  4280.         AL = next character (removed from receive buffer)
  4281.     AX = FFFFh if no character available
  4282. SeeAlso: AH=0Ch,AH=21h"X00"
  4283. ----------1420-------------------------------
  4284. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  4285.     AH = 20h
  4286.     AL = logical port (01h COM1, 02h COM2)
  4287.     DX = physical port number
  4288. Return: AX = status
  4289.         0000h successful
  4290.         FFFFh failed
  4291. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  4292. ----------1420-------------------------------
  4293. INT 14 - MultiDOS Plus - INITIALIZE PORT
  4294.     AH = 20h
  4295.     AL = port parameters (see AH=00h"SERIAL")
  4296.     DX = port number (0-3)
  4297. Return: AH = status
  4298.         00h successful
  4299.         41h no such port
  4300.         64h monitor mode already active
  4301. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  4302. ----------1421-------------------------------
  4303. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  4304.     AH = 21h
  4305.     AL = character
  4306.     DX = port number
  4307. Notes:    the given character is inserted at the end of the receive buffer as if
  4308.       it had just arrived from the serial port; all normal receive
  4309.       processing (XON/XOFF, ^C/^K) is performed on the character
  4310.     fully re-entrant
  4311. SeeAlso: AH=20h"X00"
  4312. ----------1421-------------------------------
  4313. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  4314.     AH = 21h
  4315.     DX = physical port number
  4316. Return: AX = status
  4317.         0000h successful
  4318.         FFFFh failed
  4319. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  4320. ----------1421-------------------------------
  4321. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  4322.     AH = 21h
  4323.     AL = character to send
  4324.     DX = port number
  4325. Return: AH = status
  4326.         00h successful
  4327.         39h no DSR or CTS
  4328.         3Ch no DSR
  4329.         3Bh no CTS
  4330.         41h no such port
  4331.         42h monitor mode not active
  4332.         97h timed out
  4333. Note:    monitor mode must have been turned on with AH=24h before calling
  4334. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  4335. ----------1422-------------------------------
  4336. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  4337.     AH = 22h
  4338.     AL = logical port (01h COM1, 02h COM2)
  4339. Return: AX = status (0000h successful)
  4340. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  4341. ----------1422-------------------------------
  4342. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  4343.     AH = 22h
  4344.     DX = port number
  4345. Return: AH = status (see also AH=21h"MultiDOS")
  4346.         00h successful
  4347.             AL = character
  4348.         3Dh framing and parity error
  4349.         3Eh overrun error
  4350.         3Fh framing error
  4351.         40h parity error
  4352.         96h ring buffer overflow
  4353. Note:    if no character is available, this function waits until a character
  4354.       arrives or an implementation-dependent timeout elapses
  4355. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  4356. ----------1423-------------------------------
  4357. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  4358.     AH = 23h
  4359.     AL = logical port (01h COM1, 02h COM2)
  4360.     DH = user ID
  4361.     DL = process ID (DH,DL both FFh for current task)
  4362. Return: AL = MW386 port mode
  4363.         bit 0: port is shared (spooler only)
  4364.         1: port is spooled instead of direct (spooler only)
  4365.         2: port is assigned as logical COM device, not in spooler
  4366.         3: port is free
  4367.     CX = MW386 port number
  4368.     DH = owner's user ID
  4369.     DL = owner's task ID
  4370. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  4371. ----------1423-------------------------------
  4372. INT 14 - MultiDOS Plus - GET PORT STATUS
  4373.     AH = 23h
  4374.     DX = port number
  4375. Return: AH = line status (see AH=03h)
  4376.     AL = modem status (see AH=03h)
  4377. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  4378. ----------1424-------------------------------
  4379. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  4380.     AH = 24h
  4381.     CX = physical I/O port number
  4382.     DS:DX -> configuration table (see below)
  4383. Return: AH = 00h
  4384. Note:    invalid port numbers are merely ignored
  4385. SeeAlso: INT 17/AH=96h
  4386.  
  4387. Format of configuration table:
  4388. Offset    Size    Description
  4389.  00h    BYTE    baud rate
  4390.         00h 38400
  4391.         01h 19200
  4392.         02h  9600
  4393.         03h  7200
  4394.         04h  4800
  4395.         05h  3600
  4396.         06h  2400
  4397.         07h  2000
  4398.         08h  1200
  4399.         09h   600
  4400.         0Ah   300
  4401.         0Bh   150
  4402.         0Ch   134.5
  4403.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  4404.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  4405.  03h    BYTE    stop bits (00h=1, 01h=2)
  4406.  04h    BYTE    receive flow control
  4407.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  4408.  05h    BYTE    transmit flow control (as for receive)
  4409. ----------1424-------------------------------
  4410. INT 14 - MultiDOS Plus - SET MONITOR MODE
  4411.     AH = 24h
  4412.     AL = port status storage
  4413.         00h single status for entire receive buffer
  4414.         01h separate status kept for each byte in receive buffer
  4415.     DX = port number
  4416. Return: AH = status
  4417.         00h successful
  4418.         3Ah invalid status storage specified
  4419.         41h no such port
  4420.         64h monitor mode already active
  4421. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  4422.       port
  4423. SeeAlso: AH=20h"MultiDOS",AH=25h
  4424. ----------1425-------------------------------
  4425. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  4426.     AH = 25h
  4427.     AL = function
  4428.         00h only clear buffers
  4429.         01h clear buffers and deactivate
  4430.     DX = port number
  4431. Return: AH = status
  4432.         00h successful
  4433.         3Ah invalid function
  4434.         41h no such port
  4435.         42h monitor mode not active
  4436. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  4437. ----------1427-------------------------------
  4438. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  4439.     AH = 27h
  4440.     DX = port number
  4441. Return: AH = status
  4442.         00h successful
  4443.         41h no such port
  4444.         42h monitor mode not active
  4445.     AL = number of characters in receive buffer
  4446. ----------147E-------------------------------
  4447. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  4448.     AH = 7Eh
  4449.     AL = code assigned to external application (80h-BFh)
  4450.         80h reserved for communications FOSSIL
  4451.         81h video FOSSIL
  4452.         82h reserved for keyboard FOSSIL
  4453.         83h reserved for system FOSSIL
  4454.     ES:DX -> entry point
  4455. Return: AX = 1954h
  4456.     BL = code assigned to application (same as input AL)
  4457.     DH = 00h failed
  4458.          01h successful
  4459. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  4460. ----------147F-------------------------------
  4461. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  4462.     AH = 7Fh
  4463.     AL = code assigned to external application
  4464.     ES:DX -> entry point
  4465. Return: AX = 1954h
  4466.     BL = code assigned to application (same as input AL)
  4467.     DH = 00h failed
  4468.          01h successful
  4469. SeeAlso: AH=7Eh
  4470. ----------1480-------------------------------
  4471. INT 14 - COMMUNICATIONS FOSSIL
  4472.     AH = 80h
  4473. SeeAlso: AH=7Eh
  4474. ----------1480-------------------------------
  4475. INT 14 - COURIERS.COM - INSTALLATION CHECK
  4476.     AH = 80h
  4477. Return: AH = E8h if loaded
  4478. Note:    COURIERS is a TSR utility by PC Magazine
  4479. ----------1481-------------------------------
  4480. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  4481.     AH = 81h
  4482.     AL = port number (1-4)
  4483. Return: AH = 00h port available
  4484.          01h port exists but already in use
  4485.          02h port nonexistent
  4486. Note:    COURIERS is a TSR utility by PC Magazine
  4487. SeeAlso: AH=83h,AH=8Dh
  4488. ----------148100-----------------------------
  4489. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  4490.     AX = 8100h
  4491.     ES:DI -> buffer for VFOSSIL information (see below)
  4492. Return: AX = 1954h if installed
  4493. SeeAlso: AH=7Eh,AX=8101h
  4494.  
  4495. Format of VFOSSIL information:
  4496. Offset    Size    Description
  4497.  00h    WORD    size of information in bytes, including this field
  4498.  02h    WORD    VFOSSIL major version
  4499.  04h    WORD    VFOSSIL revision level
  4500.  06h    WORD    highest VFOSSIL application function supported
  4501. ----------148101-----------------------------
  4502. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  4503.     AX = 8101h
  4504.     ES:DI -> buffer for application function table (see below)
  4505.     CX = length of buffer in bytes
  4506. Return: AX = 1954h if installed
  4507.         BH = highest VFOSSIL application function supported
  4508. Note:    the number of initialized pointers in the application function table
  4509.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  4510.       will be initialized
  4511. SeeAlso: AX=8102h
  4512.  
  4513. Format of application function table:
  4514. Offset    Size    Description
  4515.  00h    DWORD    -> function to query current video mode (VioGetMode)
  4516.  04h    DWORD    -> function to set video mode (VioSetMode)
  4517.  08h    DWORD    -> function to query hardware config (VioGetConfig)
  4518.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY)
  4519.  10h    DWORD    -> function to get current ANSI state (VioGetANSI)
  4520.  14h    DWORD    -> function to set new ANSI state (VioSetANSI)
  4521.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  4522.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos)
  4523.  20h    DWORD    -> function to get cursor shape (VioGetCurType)
  4524.  24h    DWORD    -> function to set cursor shape (VioSetCurType)
  4525.  28h    DWORD    -> function to scroll screen up (VioScrollUp)
  4526.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn)
  4527.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  4528.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  4529.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  4530.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  4531.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  4532.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  4533.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  4534.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  4535.  
  4536. Format of video mode data structure:
  4537. Offset    Size    Description
  4538.  00h    WORD    length of structure including this field
  4539.  02h    BYTE    mode characteristics
  4540.         bit 0: clear if MDA, set otherwise
  4541.         bit 1: graphics mode
  4542.         bit 2: color disabled (black-and-white)
  4543.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  4544.  04h    WORD    number of text columns
  4545.  06h    WORD    number of text rows
  4546.  08h    WORD    reserved
  4547.  0Ah    WORD    reserved
  4548.  0Ch    DWORD    reserved
  4549.  
  4550. Format of video configuration data:
  4551. Offset    Size    Description
  4552.  00h    WORD    structure length including this field
  4553.  02h    WORD    adapter type
  4554.         00h monochrome/printer
  4555.         01h CGA
  4556.         02h EGA
  4557.         03h VGA
  4558.         07h 8514/A
  4559.  04h    WORD    display type
  4560.         00h monochrome
  4561.         01h color
  4562.         02h enhanced color
  4563.         09h 8514
  4564.  06h    DWORD    adapter memory size
  4565.  
  4566. Format of cursor type record:
  4567. Offset    Size    Description
  4568.  00h    WORD    cursor start line
  4569.  02h    WORD    cursor end line
  4570.  04h    WORD    cursor width (always 01h)
  4571.  06h    WORD    cursor attribute (FFFFh = hidden)
  4572.  
  4573. Call VioGetMode with:
  4574.     STACK:    WORD    VIO handle (must be 00h)
  4575.         DWORD    pointer to video mode data structure (see above)
  4576. Return: AX = error code (00h, 74h, 17Eh, 1B4h)
  4577.         0000h successful
  4578.         0074h internal VIO failure
  4579.         0163h unsupported mode
  4580.         0166h invalid row value
  4581.         0167h invalid column value
  4582.         017Eh buffer too small
  4583.         01A5h invalid VIO parameter
  4584.         01B4h invalid VIO handle
  4585.  
  4586. Call VioSetMode with:
  4587.     STACK:    WORD    VIO handle (must be 00h)
  4588.         DWORD    pointer to video mode data structure (see above)
  4589. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
  4590.  
  4591. Call VioGetConfig with:
  4592.     STACK:    WORD    VIO handle (must be 00h)
  4593.         DWORD    pointer to video configuration data buffer (see above)
  4594. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
  4595.  
  4596. Call VioWrtTTY with:
  4597.     STACK:    WORD    VIO handle (must be 00h)
  4598.         WORD    length of string
  4599.         DWORD    pointer to character string to be written to screen
  4600. Return: AX = error code (00h, 74h, 1B4h) (see above)
  4601. Notes:    write wraps at end of line and terminates if it reaches end of screen
  4602.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  4603.       not required to be reentrant; in non-ANSI mode, the function is
  4604.       reentrant and may be called from within an MSDOS function call
  4605.  
  4606. Call VioGetANSI with:
  4607.     STACK:    WORD    VIO handle (must be 00h)
  4608.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  4609.             or 01h if ANSI is on
  4610. Return: AX = error code (00h, 74h, 1B4h) (see above)
  4611.  
  4612. Call VioSetANSI with:
  4613.     STACK:    WORD    VIO handle (must be 00h)
  4614.         DWORD    pointer to WORD indicating new state of ANSI
  4615.             00h off
  4616.             01h on
  4617. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  4618.  
  4619. Call VioGetCurPos with:
  4620.     STACK:    WORD    VIO handle (must be 00h)
  4621.         DWORD    pointer to WORD to hold current cursor column (0-based)
  4622.         DWORD    pointer to WORD to hold current cursor row (0-based)
  4623. Return: AX = error code (00h, 74h, 1B4h) (see above)
  4624.  
  4625. Call VioSetCurPos with:
  4626.     STACK:    WORD    VIO handle (must be 00h)
  4627.         WORD    cursor column
  4628.         WORD    cursor row
  4629. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  4630. Note:    if either coordinate is invalid, the cursor is not moved
  4631.  
  4632. Call VioGetCurType with:
  4633.     STACK:    WORD    VIO handle (must be 00h)
  4634.         DWORD    pointer to cursor type record (see above)
  4635. Return: AX = error code (00h, 74h, 1B4h) (see above)
  4636.  
  4637. Call VioSetCurType with:
  4638.     STACK:    WORD    VIO handle (must be 00h)
  4639.         DWORD    pointer to cursor type record (see above)
  4640. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  4641.  
  4642. Call VioScrollUp with:
  4643.     STACK:    WORD    VIO handle (must be 00h)
  4644.         DWORD    pointer to char/attr cell for filling emptied rows
  4645.         WORD    number or rows to scroll (FFFFh = clear area)
  4646.         WORD    right column of scroll area
  4647.         WORD    bottom row of scroll area
  4648.         WORD    left column of scroll area
  4649.         WORD    top row of scroll area
  4650. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  4651.  
  4652. Call VioScrollDn with:
  4653.     STACK:    WORD    VIO handle (must be 00h)
  4654.         DWORD    pointer to char/attr cell for filling emptied rows
  4655.         WORD    number or rows to scroll (FFFFh = clear area)
  4656.         WORD    right column of scroll area
  4657.         WORD    bottom row of scroll area
  4658.         WORD    left column of scroll area
  4659.         WORD    top row of scroll area
  4660. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  4661.  
  4662. Call VioReadCellStr with:
  4663.     STACK:    WORD    VIO handle (must be 00h)
  4664.         WORD    column at which to start reading
  4665.         WORD    row at which to start reading
  4666.         DWORD    pointer to WORD containing length of buffer in bytes
  4667.             on return, WORD contains number of bytes actually read
  4668.         DWORD    pointer to buffer for cell string
  4669. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  4670.  
  4671. Call VioReadCharStr with:
  4672.     STACK:    WORD    VIO handle (must be 00h)
  4673.         WORD    column at which to start reading
  4674.         WORD    row at which to start reading
  4675.         DWORD    pointer to WORD containing length of buffer in bytes
  4676.             on return, WORD contains number of bytes actually read
  4677.         DWORD    pointer to buffer for character string
  4678. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  4679.  
  4680. Call VioWrtCellStr with:
  4681.     STACK:    WORD    VIO handle (must be 00h)
  4682.         WORD    column at which to start writing
  4683.         WORD    row at which to start writing
  4684.         WORD    length of cell string in bytes
  4685.         DWORD    pointer to cell string to write
  4686. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  4687. Note:    write wraps at end of line and terminates if it reaches end of screen
  4688.  
  4689. Call VioWrtCharStr with:
  4690.     STACK:    WORD    VIO handle (must be 00h)
  4691.         WORD    column at which to start writing
  4692.         WORD    row at which to start writing
  4693.         WORD    length of character string
  4694.         DWORD    pointer to character string to write
  4695. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  4696. Note:    write wraps at end of line and terminates if it reaches end of screen
  4697.  
  4698. Call VioWrtCharStrAttr with:
  4699.     STACK:    WORD    VIO handle (must be 00h)
  4700.         DWORD    pointer to attribute to be applied to each character
  4701.         WORD    column at which to start writing
  4702.         WORD    row at which to start writing
  4703.         WORD    length of character string
  4704.         DWORD    pointer to character string to write
  4705. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  4706. Note:    write wraps at end of line and terminates if it reaches end of screen
  4707.  
  4708. Call VioWrtNAttr with:
  4709.     STACK:    WORD    VIO handle (must be 00h)
  4710.         WORD    column at which to start writing
  4711.         WORD    row at which to start writing
  4712.         WORD    number of times to write attribute
  4713.         DWORD    pointer to display attribute to replicate
  4714. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  4715. Note:    write wraps at end of line and terminates if it reaches end of screen
  4716.  
  4717. Call VioWrtNCell with:
  4718.     STACK:    WORD    VIO handle (must be 00h)
  4719.         WORD    column at which to start writing
  4720.         WORD    row at which to start writing
  4721.         WORD    number of times to write cell
  4722.         DWORD    pointer to cell to replicate
  4723. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  4724. Note:    write wraps at end of line and terminates if it reaches end of screen
  4725.  
  4726. Call VioWrtNChar with:
  4727.     STACK:    WORD    VIO handle (must be 00h)
  4728.         WORD    column at which to start writing
  4729.         WORD    row at which to start writing
  4730.         WORD    number of times to write character
  4731.         DWORD    pointer to character to replicate
  4732. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  4733. Note:    write wraps at end of line and terminates if it reaches end of screen
  4734. ----------148102-----------------------------
  4735. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  4736.     AX = 8102h
  4737. Return: AX = 1954h
  4738. Note:    terminates all operations; after this call, the video FOSSIL may either
  4739.       be removed from memory or reinitialized
  4740. SeeAlso: AX=8101h,AX=8103h
  4741. ----------148103-----------------------------
  4742. INT 14 - VIDEO FOSSIL - UNINSTALL
  4743.     AX = 8103h
  4744. Return:    AX = 1954h
  4745. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  4746. ----------1482-------------------------------
  4747. INT 14 - KEYBOARD FOSSIL
  4748.     AH = 82h
  4749. SeeAlso: AH=7Eh
  4750. ----------1482-------------------------------
  4751. INT 14 - COURIERS.COM - CONFIGURE PORT
  4752.     AH = 82h
  4753.     AL = port number (1-4)
  4754.     BX = speed (bps)
  4755.     CX = bit flags
  4756.         bit 0: enable input flow control
  4757.         bit 1: enable output flow control
  4758.         bit 2: use X.PC protocol (not yet implemented)
  4759. SeeAlso: AH=00h,AH=8Ch
  4760. ----------1483-------------------------------
  4761. INT 14 - SYSTEM FOSSIL
  4762.     AH = 83h
  4763. SeeAlso: AH=7Eh
  4764. ----------1483-------------------------------
  4765. INT 14 - COURIERS.COM - START INPUT
  4766.     AH = 83h
  4767.     ES:BX -> circular input buffer
  4768.     CX = length of buffer 
  4769.         (should be at least 128 bytes if input flow control enabled)
  4770. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  4771. ----------1484-------------------------------
  4772. INT 14 - COURIERS.COM - READ CHARACTER
  4773.     AH = 84h
  4774. Return: ZF set if no characters available
  4775.     ZF clear
  4776.        AL = character
  4777.        AH = modem status bits
  4778.         bit 7: set on input buffer overflow
  4779. SeeAlso: AH=02h,AH=86h,AH=89h
  4780. ----------1485-------------------------------
  4781. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  4782.     AH = 85h
  4783. SeeAlso: AH=0Ah,AH=88h
  4784. ----------1486-------------------------------
  4785. INT 14 - COURIERS.COM - START OUTPUT
  4786.     AH = 86h
  4787.     ES:BX -> output buffer
  4788.     CX = length of output buffer
  4789. SeeAlso: AH=19h,AH=83h,AH=A4h"BAPI"
  4790. ----------1487-------------------------------
  4791. INT 14 - COURIERS.COM - OUTPUT STATUS
  4792.     AH = 87h
  4793. Return: AX = number of unsent characters
  4794. ----------1488-------------------------------
  4795. INT 14 - COURIERS.COM - ABORT OUTPUT
  4796.     AH = 88h
  4797. SeeAlso: AH=09h,AH=85h
  4798. ----------1489-------------------------------
  4799. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  4800.     AH = 89h
  4801.     CL = character to send
  4802. SeeAlso: AH=01h,AH=84h
  4803. ----------148A-------------------------------
  4804. INT 14 - COURIERS.COM - SEND BREAK
  4805.     AH = 8Ah
  4806. SeeAlso: AH=89h,AH=FAh
  4807. ----------148C-------------------------------
  4808. INT 14 - COURIERS.COM - SET SPEED
  4809.     AH = 8Ch
  4810.     BX = speed in bps
  4811. SeeAlso: AH=00h,AH=82h"COURIERS"
  4812. ----------148D-------------------------------
  4813. INT 14 - COURIERS.COM - DECONFIGURE PORT
  4814.     AH = 8Dh
  4815. SeeAlso: AH=82h"COURIERS"
  4816. ----------14A0-------------------------------
  4817. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  4818.     AH = A0h
  4819.     ???
  4820. Return: ???
  4821. SeeAlso: AH=A1h"BAPI"
  4822. ----------14A0--CXFFFF-----------------------
  4823. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  4824.     AH = A0h
  4825.     CX = FFFFh
  4826. Return: CF clear if successful
  4827.         AX = 5445h ('TE')
  4828.         CX <> FFFFh
  4829.         DX = port number
  4830.     CF set on error
  4831. Note:    TES is a network serial port emulation program
  4832. SeeAlso: AH=A1h"TES"
  4833. ----------14A1-------------------------------
  4834. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  4835.     AH = A1h
  4836.     ???
  4837. Return: ???
  4838. SeeAlso: AH=A0h"BAPI"
  4839. ----------14A1-------------------------------
  4840. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  4841.     AH = A1h
  4842. Return: CX = number of active sessions
  4843.     ES:SI -> status array (see below)
  4844. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  4845.  
  4846. Format of status array entry:
  4847. Offset    Size    Description
  4848.  00h    BYTE    status
  4849.  01h    WORD    offset of name
  4850. ----------14A2-------------------------------
  4851. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  4852.     AH = A2h
  4853. Return:    CX = number of servers
  4854.     ES:SI -> array of offsets from ES for server names
  4855. SeeAlso: AH=A1h"TES"
  4856. ----------14A3-------------------------------
  4857. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  4858.     AH = A3h
  4859.     ES:SI -> ???
  4860. Return: CF clear if successful
  4861.         AX = 5445h ('TE')
  4862.         CX <> FFFFh
  4863.         DX = port number
  4864.     CF set on error
  4865. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  4866. ----------14A4-------------------------------
  4867. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  4868.     AH = A4h
  4869.     CX = length
  4870.     DH = session number (00h)
  4871.     ES:BX -> buffer
  4872. Return: CX = number of bytes sent
  4873. SeeAlso: AH=19h,AH=86h,AH=A5h"BAPI"
  4874. ----------14A4-------------------------------
  4875. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  4876.     AH = A4h
  4877.     ???
  4878. Return: ???
  4879. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  4880. ----------14A5-------------------------------
  4881. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  4882.     AH = A5h
  4883.     CX = length
  4884.     DH = session number (00h)
  4885.     ES:BX -> buffer
  4886. Return: CX = number of bytes read
  4887. SeeAlso: AH=18h,AH=83h,AH=A4h"BAPI",AX=FF02h
  4888. ----------14A5-------------------------------
  4889. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  4890.     AH = A5h
  4891.     AL = session number
  4892. Return: ???
  4893. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  4894. ----------14A6-------------------------------
  4895. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  4896.     AH = A6h
  4897.     DH = session number (00h)
  4898. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh
  4899. ----------14A6-------------------------------
  4900. INT 14 - Interconnections Inc. TES - DROP A SESSION
  4901.     AH = A6h
  4902.     AL = session number
  4903. Return: AH = status
  4904.         00h successful
  4905.         else error
  4906. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  4907. ----------14A7-------------------------------
  4908. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  4909.     AH = A7h
  4910.     ???
  4911. Return: ???
  4912. ----------14A7-------------------------------
  4913. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  4914.     AH = A7h
  4915.     ???
  4916. Return: ???
  4917. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  4918. ----------14A8-------------------------------
  4919. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  4920.     AH = A8h
  4921.     AL = 00h no visible response
  4922.     ES:SI -> ASCIZ command
  4923. Return: ???
  4924. ----------14AF00BXAAAA-----------------------
  4925. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  4926.     AX = AF00h
  4927.     BX = AAAAh
  4928. Return: AX = AF01h if installed
  4929. ----------14B0-------------------------------
  4930. INT 14 - 3com BAPI SERIAL I/O - ENABLE/DISABLE "ENTER COMMAND MODE" CHARACTER
  4931.     AH = B0h
  4932.     AL = 00h disable
  4933.        = 01h enable
  4934. ----------14B1-------------------------------
  4935. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  4936.     AH = B1h
  4937. ----------14F4FF-----------------------------
  4938. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  4939.     AX = F4FFh
  4940.     DX = port (00h-03h)
  4941. Return: CF clear if present
  4942.         AX = 0000h
  4943.     CF set if not present
  4944.         AX <> 0000h
  4945. ----------14F9-------------------------------
  4946. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  4947.     AH = F9h
  4948.     DX = port (00h-03h)
  4949. ----------14FA-------------------------------
  4950. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  4951.     AH = FAh
  4952.     DX = port (00h-03h)
  4953. SeeAlso: AH=1Ah,AH=8Ah
  4954. ----------14FB-------------------------------
  4955. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  4956.     AH = FBh
  4957.     AL = modem control register
  4958.         bit 0: data terminal ready
  4959.         1: request to send
  4960.         2: OUT1
  4961.         3: OUT2
  4962.         4: loopback
  4963.         bits 5-7 unused
  4964.     DX = port (00h-03h)
  4965. ----------14FC-------------------------------
  4966. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  4967.     AH = FCh
  4968.     DX = port (00h-03h)
  4969. Return: AH = RS232 status bits (see AH=00h)
  4970.     AL = character
  4971. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  4972. ----------14FD02-----------------------------
  4973. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  4974.     AX = FD02h
  4975. Return: CX = number of characters available
  4976. ----------14FF02-----------------------------
  4977. INT 14 - IBM/Yale EBIOS SERIAL I/O - BUFFERED READ
  4978.     AX = FF02h
  4979.     CX = length
  4980.     DX = port (00h-03h)
  4981.     ES:BX -> buffer
  4982. Return: CX = number of characters read
  4983. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh
  4984. ---------------------------------------------
  4985.